继承 ; A extends B;
就代表A继承了B; B类作为一个父类, A类作为一个子类;
定义: 子类继承父类的属性和方法;子类可拥有自己独有的属性和方法;
package com.lv.ext; //生物 public class Organisa { String name; public void huozhe(){ } }
package com.lv.ext; //动物 //Animal extends Organisa 动物类继承生物类 //构造函数不能继承 public class Animal extends Organisa { //私有的属性 private int number; //私有的方法 private void test(){ } public Animal(){ System.out.println("这个是Animal的构造方法"); } public Animal(String name){ this.name=name; System.out.println("这个是Animal带参数的构造函数"); } public void eat(){ } public void sleep(){ } }
package com.lv.ext; //蛇 public class Snake extends Animal { //能不能吧Animal的构造方法继承过来? 不能 public Snake(){ } public void pa(){ } }
测试类:
package com.lv.ext; public class Test1 { public static void main(String[] args) { Snake snake=new Snake(); //能使用snake.name? snake.name="tom"; //这个方法是从的间接父类继承的 snake.huozhe(); //从父类继承2个方法 snake.eat(); snake.sleep(); //并且有自己独有的方法 snake.pa(); //私有的属性和方法不能被继承 //snake.number;//父类私有的属性 //snake.test();//父类私有的方法 //子类继承父类的所有的属性和方法;子类可以有自己独有的属性和方法 } }
3种不可继承:
1: 构造方法;
2: private修饰的属性和方法;
3: 父子不在同一个包中,default修饰符的属性和方法;
继承时,创建子类对象;
定义: 在具有继承关系的对象创建中,构建子类对象会优先构建父类对象
package com.lv.son; //生物类 public class ShengWu { //生物的构造函数 public ShengWu(){ System.out.println("ShengWu的构造函数"); } }
package com.lv.son; public class Animal extends ShengWu{ public Animal(){ System.out.println("Animal的构造函数"); } }
package com.lv.son; public class Fish extends Animal{ public Fish(){ System.out.println("Fish的构造函数"); } }
测试类
package com.lv.son; public class Test { public static void main(String[] args) { Fish fish=new Fish(); } }
访问修饰符
本类 同包 非同包子类 其他
private √ × × ×
default √ √ × ×
protected √ √ √ ×
public √ √ √ √
来源:https://www.cnblogs.com/dabu/p/12328113.html