11.面向对象继承

11.面向对象-继承


11.1 知识点

Java中继承和C#中的相同点

  • 类与类之间只能单继承
  • 万物之父都是Object
  • 遵循里氏替换原则(可以父类装子类对象)

Java中继承的写法

关键字:extends

public class Lesson11_Father {}
public class Lesson11_Son extends Lesson11_Father {}

万物之父Object中的关键方法

  • getClass(): 类似C#中的getType()
    Lesson11_Father father = new Lesson11_Father();
    System.out.println(father.getClass()); // class Lesson11_Father
    
  • toString(): 将对象以字符串形式返回
  • equals(): 比较两个对象的内部内容,而==是判断引用地址是否相等

父子类的上下转换(里氏替换原则)

  • 子类自动向上转换
    Lesson11_Father father2 = new Lesson11_Son();
    
  • 父类强制向下转换
    Lesson11_Son son = (Lesson11_Son) father2;
    

instanceof关键字

用于判断对象类型,类似C#中的is关键字

if (father2 instanceof Lesson11_Father) {
    System.out.println("是Father类");
}
if (father2 instanceof Lesson11_Son) {
    Lesson11_Son s2 = (Lesson11_Son) father2;
    System.out.println("是Son类");
}

final关键字

类似C#中的密封关键字

  • 让变量无法被修改(常量)
  • 让函数无法被重写
  • 让类无法被继承

总结

Java中继承使用和C#基本一致,只是有一些关键字和小规则不同而已。


11.2 知识点代码

Lesson11_Father

public class Lesson11_Father
{
    @Override
    public boolean equals(Object obj)
    {
        return super.equals(obj);
    }

    public void Eat()
    {

    }
}

Lesson11_Son

public class Lesson11_Son extends Lesson11_Father
{
    @Override
    public void Eat() {
        super.Eat();
    }
}

Lesson11_面向对象_继承

public class Lesson11_面向对象_继承
{
    public static void main(String[] args)
    {
        //知识点1:Java中继承和C#中的相同点
        //1.类与类之间只能单继承
        //2.万物之父都是Object
        //3.遵循里氏替换原则(可以父类装子类对象)


        //知识点2:Java中 继承的写法
        //关键字:extends


        //知识点3:万物之父Object中的关键方法
        //1.getClass():类似C#中的getType()
        Lesson11_Father father = new Lesson11_Father();
        System.out.println(father.getClass());//class Lesson11_Father
        //2.toString():将对象以字符串形式返回
        //3.equals():比较两个对象的内部内容,而==是判断引用地址是否相等


        //知识点4: 父子类的上下转换(里氏替换原则)
        //1.子类自动向上转换
        Lesson11_Father father2 = new Lesson11_Son();
        //2.父类强制向下转换
        Lesson11_Son son = (Lesson11_Son) father2;


        //知识点5:instanceof关键字
        //用于判断对象类型,类似C#中的is关键字
        if (father2 instanceof Lesson11_Father)
        {
            System.out.println("是Father类");
        }
        if (father2 instanceof Lesson11_Son)
        {
            Lesson11_Son s2 = (Lesson11_Son) father2;
            System.out.println("是Son类");
        }


        //知识点6:final关键字
        //类似C#中的密封关键字
        //让变量无法被修改(常量)
        //让函数无法被重写
        //让类无法被继承


        //总结
        //Java中继承使用和C#基本一致
        //只是有一些关键字和小规则不同而已
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏