第十二章 继承

一、什么是继承,有什么作用?

1、继承:
在现实世界当中也是存在的,例如:父亲很有钱,儿子不用努力也很有钱。

2、继承的作用:
基本作用:子类继承父类,代码可以得到复用。
主要作用:因为有了继承关系,才有了后期的方法覆盖和多态机制。

二、继承的相关特性

1、B类继承A类,则称A类为超类(superclass)、父类、基类,B类则称为子类(subclass)、派生类、扩展类。

2、java 中的继承只支持单继承,不支持多继承,C++中支持多继承,这也是 java 体现简单性的一点,换句话说,java 中不允许这样写代码。
例如:class B extends A,C{ } 这是错误的。

3、虽然 java 中不支持多继承,但有的时候会产生间接继承的效果,
例如:class C extends B,class B extends A,也就是说,C 直接继承 B,其实 C 还间接继承 A。

4、java 中规定,子类继承父类,除构造方法不能继承之外,剩下都可以继承。但是私有的属性无法在子类中直接访问。(父类中private修饰的不能在子类中直接访问。可以通过间接的手段来访问。)

5、java 中的类没有显示的继承任何类,则默认继承 Object类,Object类是 java 语言提供的根类(老祖宗类),也就是说,一个对象与生俱来就有 Object类型中所有的特征。

6、继承也存在一些缺点,例如:CreditAccount 类继承 Account 类会导致它们之间的耦合度非常高,Account 类发生改变之后会马上影响到 CreditAccount 类。

三、子类继承父类之后,能使用子类对象调用父类方法吗?

可以,因为子类继承了父类之后,这个方法就属于子类了。当然可以使用子类对象来调用。

四、在实际开发中,满足什么条件的时候,我可以使用继承呢?

凡是采用“is a”能描述的,都可以继承。例如:
            Cat is a Animal:猫是一个动物
            Dog is a Animal:狗是一个动物
            CreditAccount is a Account:信用卡账户是一个银行账户
            ....
假设以后的开发中有一个A类,有一个B类,A类和B类确实也有重复的代码,那么他们两个之间就可以继承吗?不一定,还是要看一看它们之间是否能够使用is a来描述。
            class Customer{
                String name; // 名字
                // setter and getter
            }

            class Product{
                String name; // 名字
                // setter and getter
            }

            class Product extends Customer{
            
            }
以上的继承就属于很失败的。因为:Product is a Customer,是有违伦理的。

五、任何一个类,没有显示继承任何类,默认继承Object,那么Object类当中有哪些方法呢?

以后慢慢的大家一定要适应看JDK的源代码(多看看牛人写的程序自己才会变成牛人。)先模仿后超越。

java为什么比较好学呢?是因为Java内置了一套庞大的类库,程序员不需要从0开始写代码,程序员可以基于这套庞大的类库进行“二次”开发。(开发速度较快,因为JDK内置的这套库实现了很多基础的功能。)例如:String是SUN编写的字符串类、System是SUN编写的系统类。这些类都可以拿来直接使用。
        
JDK源代码在什么位置?
C:\Program Files\Java\jdk-13.0.2\lib\src.zip
        
现在能看懂以下代码了吗?
System.out.println("Hello World!");
System.out 中,out后面没有小括号,说明out是变量名。另外System是一个类名,直接使用类名System.out,说明out是一个静态变量。
System.out 返回一个对象,然后采用“对象.”的方式访问println()方法。
        
我们研究了一下Object类当中有很多方法,大部分看不懂,其中有一个叫做toString()的,我们进行了测试,发现:
System.out.println(引用);
当直接输出一个“引用”的时候,println()方法会先自动调用“引用.toString()”,然后输出toString()方法的执行结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值