继承的概念
继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系
注意:在java里只能单继承,不可多继承
继承需要使用一个关键字extends ,调用父类的属性和方法需要关键字super
class Person{
String name;
void speak(){
System.out.println("人们都会讲话");
}
}
class Man extends Person{
void speak(){
System.out.println("我是一个先生");
}
}
class Woman extends Person{
void speak(){
System.out.println("我是一个女士");
}
}
public class Test{
public static void main(String []args){
Man m=new Man();
m.speak();
Woman w=new Woman();
w.speak();
}
调用父类的属性和方法需要关键字super
class Animal{
String name="动物";
void eat(){
System.out.println("动物都吃东西");
}
}
class Cat extends Animal{
String name="猫科";
void eat(){
System.out.println(super.name+"里有"+this.name);
}
}
public class Test{
public static void main(String[] args) {
Cat c= new Cat();
c.eat();
}
}
关键字:final
用于修饰类,变量和方法,有"无法改变"和"最终的"
- final修饰的类不能被继承。
- final修饰的方法不能被子类重写。
- final修饰的变量(成员变量和局部变量)是变量,只能赋值一次。
抽象
不能实例化,不能创建对象
抽象类里也可以定义非抽象的方法
子类一定要覆盖父类的所有抽象方法才可以实例化,要么子类也要是抽象类
abstract void speak();//定义一个抽象方法speak()
定义的方法只有声明没有实现
abstract class Animal{
abstract void eat();//只有声明没有实现
}
class Cat extends Animal{
void eat(){
System.out.println("猫咪喜欢吃鱼");
}
}
class Dog extends Animal{
void eat(){
System.out.println("大黄喜欢吃骨头");
}
}
public class Test2{
public static void main(String []args){
Cat c=new Cat();
c.eat();
Dog d=new Dog();
d.eat();
}
}
接口
java 里可以支持多实现
在接口可以里有两个相同的方法因为没有实现方法
并且在Java里可以继承和接口一起使用,有更强的扩展性
[ ]:这里的数值可以不写,但建议写上
如果一个抽象类中的所有方法都是抽象的,那可以将这个类用另一种方式来定义,即接口,是对抽象类的进一步抽象
语法格式:`[public] interface 接口名[ extends 接口1,接口2,…] {
[public ] [static][final] 数据类型 常量名=常量值 ;
[public ][abstract]返回值 抽象方法名(参数)
}
[修饰符]class 类名[extends <超类名>][implement <接口1>, <接口2>,…]
`
class father{
void speak(){
System.out.println("小强喜欢的三件事");
}
}
interface Person{
public abstract void eat();
public abstract void play();
public abstract void sleep();
}
interface Person2{
public abstract void eat();
}
class Demo1 extends father implements Person,Person2{
public void eat(){
System.out.println("吃饭");
}
public void play(){
System.out.println("打豆豆");
}
public void sleep(){
System.out.println("睡觉");
}
}
public class InterTest {
public static void main(String[] args) {
Demo1 d=new Demo1();
father f=new father();
f.speak();
d.eat();
d.sleep();
d.play();
}
}