关于类的三种特性---继承

继承的概念

继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系
注意:在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();
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_47324063/article/details/106961701
今日推荐