Java——继承
目录
继承中子类的特点:可以有父类的内容,还可有自己特有的内容。
继承的优缺点:
优点:
①提高了代码的复用性(多个类相同的成员可以放到同一个类中);
②提高了代码的维护性(若方法的代码需修改,修改一处即可)。
缺点:继承让类与类之间产生了关系,类的耦合性增强,当父类变化时子类也要跟着变化,削弱了子类的独立性。
使用继承的情况:两个类A、B,满足A是B的一种,或B是A的一种,则A和B存在继承关系。
继承中变量访问特点
/*测试类*/public class Demo {public static void main(String[] args){Son s = new Son();s.show();}}
/*父类*/public class Father {public int age = 40;}
/*子类*/public class Son extends Father {public int height = 170;public int age = 20;public void show(){int age = 30;System.out.println(age);System.out.println(height);}}
super关键字
| 关键字 | 访问成员变量 | 访问构造方法 | 访问成员方法 | 
| this | this.成员变量,访问本类成员变量 | this(…),访问本类构造方法 | this.成员方法(…) | 
| super | super.成员变量,访问父类成员变量 | super(…),访问父类构造方法 | super.成员方法(…),访问父类成员方法 | 
/*子类*/public class Son extends Father {public int age = 20;public void show(){int age = 30;System.out.println(age);//访问本类的成员变量ageSystem.out.println(this.age);//访问父类的成员变量ageSystem.out.println(super.age);}}
继承中构造方法访问特点
/*父类*/public class Father {public Father() {System.out.println("父类中无参构造方法被调用");}public Father(int age) {System.out.println("父类中带参构造方法被调用");}}
/*子类*/public class Son extends Father {public Son(){//super();super(20);System.out.println("子类中无参构造方法被调用");}public Son(int age){//super();super(20);System.out.println("子类中带参构造方法被调用");}}
/*测试类*/public class Demo {public static void main(String[] args){Son s = new Son();Son s2 = new Son(20);}}
继承中成员方法访问特点
/*父类*/public class Father {public void show(){System.out.println("父类中show方法被调用");}}
/*子类*/public class Son extends Father {public void method(){System.out.println("子类中method方法被调用");}public void show(){super.show();System.out.println("子类中show方法被调用");}}
/*测试类*/public class Demo {public static void main(String[] args){Son s = new Son();s.method();s.show();//s.text();//不存在该方法,报错}}
方法重写
/*手机类*/public class Phone {public void call(String name){System.out.println("给"+name+"打电话");}}
/*新手机类*/public class NewPhone extends Phone {public void call(String name){System.out.println("开启视频");super.call(name);}}
/*测试类*/public class PhoneDemo {public static void main(String[] args){Phone p = new Phone();p.call("zhangsan");NewPhone np = new NewPhone();np.call("lisi");}}
私有方法不能重写(父类私有成员子类不能继承)
子类方法全新啊不能更低(public > 默认 > 私有)
/*父类*/public class Father {private void show(){System.out.println("父类中show方法被调用");}public void method(){System.out.println("父类中method方法被调用");}}
/*子类*/public class Son extends Father {/*//私有方法不能重写(父类私有成员子类不能继承)@Overrideprivate void show(){super.show();System.out.println("子类中show方法被调用");}*///子类方法全新啊不能更低(public > 默认 > 私有)void method(){System.out.println("子类中method方法被调用");}}
继承的注意事项
Java中类只支持单继承,不支持多继承
Java中类支持多层继承
/*母亲类*/public calss Mother {public void dance(){System.out.println("母亲类");}}
/*爷爷类*/public class Granddad {public void drink(){System.out.println("爷爷类");}}
/*父亲类*/public class Father extends Granddad {public void cook(){System.out.println("父亲类");}}

评论





