面向对象(继承)
java中继承是完全继承,除了私有化的
继承提高代码重复利用率
语法:extends 继承
子类 extends 父类
public class A extends B{}
-
java继承的特性
-
单继承,间接多继承
-
package com.szwollf.Day07.Test2; public class Animal { String eat; public void move(){ System.out.println("我会动"); } } package com.szwollf.Day07.Test2; public class Person extends Animal { int strature; } package com.szwollf.Day07.Test2; public class Chinese extends Person{ public static void main(String[] args) { Chinese c=new Chinese(); c.eat="嚼"; c.strature=180; System.out.println(c.eat+c.strature); } }
相当于Chinese拥有两个类的所有成员变量和成员方法
-
java 中规定,子类继承父类,除构造方法和被private 修饰的数据不能继承外,剩下都可以继承。 封装的属性可以通过继承get和set查询和修改
-
构造方法不能被继承,是调用关系
父类要么无参有参都写,要么都不写(隐式无参),子类只调用父类无参,如果只写有参,会报错
package com.szwollf.Day07.TestStructure; public class Fa { String name; public Fa(){ System.out.println("父类无参"); } public Fa(String name){ System.out.println(name); } } package com.szwollf.Day07.TestStructure; public class Sun extends Fa{ public Sun(){ System.out.println("子类无参"); } public Sun(String name){ System.out.println(name); } public static void main(String[] args) { Sun s1=new Sun(); Sun s2=new Sun("牛逼"); // Fa f=new Fa("父类有参"); } }
子类创建对象之前,必须先调用父类构造函数,因为先创建父类对象
-
java中继承分两种
-
隐式继承,所有类如果没有extends关键字,就隐式Object
-
显示继承,extends关键字(重点)
-
所有类都直接或者间接继承Ob'j'e'c't
-
继承缺点:代码的耦合度太高
A extends B extends C exnteds D
D类出了问题,A B C 全遭殃
-
静态的成员是否能被继承?
静态的成员是可以被继承,有继承关系
package com.szwollf.Day07.TestStructure; public class Fa { static char gender; } package com.szwollf.Day07.TestStructure; public class Sun extends Fa{ public Sun(char gender){ System.out.println(gender); } public static void main(String[] args) { Sun s2=new Sun('男'); } }
总结:显示继承
-
继承用extends关键字 A extends B A叫子类,派生类,扩展类 B叫父类,基类,超类,根类
-
子类继承父类,继承父类所有的属性和方法,除了私有化的,构造函数
-
创建一个子类对象,首先创建父类对象
-
继承都是单继承,间接的多继承
-
继承解决了代码重复 遗留耦合度高的问题
-

浙公网安备 33010602011771号