200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 继承extends this super final 关键字 abstract抽象类 override方法重写

继承extends this super final 关键字 abstract抽象类 override方法重写

时间:2022-03-17 10:47:59

相关推荐

继承extends    this  super  final 关键字 abstract抽象类 override方法重写

继承extends

私有成员不能被继承

总结:子类方法中,使用变量的原则是:就近原则

1 package review06; 2 /* 3 私有成员不能被继承 4子类和父类有同名的成员变量:在子类的方法中,优先使用子类的成员变量 5当子类的方法中有和成员变量重名的局部变量时,优先使用局部变量 6 总结:子类方法中,使用变量的原则是:就近原则 78 */ 9 class Father{10private int num = 10;//私有成员变量不能被继承11int num1 = 11;12public void method(){13 int num2 = 2;14 System.out.println(num2);15}16 }17 class Son extends Father{18int num1 = 12;19public void show(){20 num1 = 13;21 System.out.println(num1);22}23 }24 public class ExtendsDemo2 {25public static void main(String[] args) {26 Son s = new Son();27 s.show();28 s.method();29 30}31 }

继承extends

this super final 关键字

this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。

super 关键字 父类对象内存空间的标识

子类创建对象时,为什么还需要把父类也在一片空间中创建出来???

就是由于子类对象有可能使用到父类的成员变量,

而父类的成员必须在堆内存中存在,所以父类对象必须被首先创建出来

而这个过程是虚拟机自动完成的./*

super的应用

构造方法不能被继承

super(...):显式的去调用父类的带参构造方法

子类的所有构造方法,默认情况下,第一条语句都是super();

一旦父类提供了任何构造方法,就没有默认的空参构造,super()出错.

解决方法:

1.手动提供空参构造

2.使用super调用父类的其它构造方法

*/

final 修饰类:终极类,不能被继承

final 修饰成员方法:不能被覆盖(重写)

final 修饰变量:只能被赋值一次(自定义常量)

final修饰的有三个地方可以赋值:

1.定义的时候就赋值

2.构造代码块中赋值

3.构造方法中赋值

abstract抽象类

抽象类:包含抽象方法的类就是抽象类

抽象方法是子类自己去实现,而父类只规定方法签名.

//实现子类

//子类如果是非抽象类的话,那么一定要实现父类中所有的抽象方法,

//但是,如果子类也是抽象类,那么可以不实现父类中所有的抽象方法

Animal dog2 = new Dog();

//dog2.show1();//向上造型,创建的对象,子类中的特有方法无法调用

1 /* 2抽象类:包含抽象方法的类就是抽象类 3抽象方法是子类自己去实现,而父类只规定方法签名. 45 */ 6 7 abstract class Animal{ 8abstract void run(); 9 }10 11 class Dog extends Animal{12void run(){13 System.out.println("Dog run");14}15 }16 17 class Cat extends Animal{18void run(){19 System.out.println("Cat run");20}21 }22 23 public class AbstractDemo1{24public static void main(String[] args){25 Dog d = new Dog();26 d.run();27 Cat c = new Cat();28 // c.run();29}30 }

abstract抽象类

override方法重写

子类出现和父类方法签名一模一样的方法时,父类的方法被覆盖,可以super显式调用

静态方法中不能出现super/this关键字

1 /* 2子类出现和父类方法签名一模一样的方法时,父类的方法被覆盖,可以super显式调用 34 */ 5 class Father{ 6private void show(){ 7 System.out.println("Father show()"); 8} 9void method(){10 System.out.println("Father method()");11}12static void function(){13 System.out.println("Father function()");14}15 }16 class Son extends Father{17private void show(){18 System.out.println("Son show()");19}20void method(){21 super.method();//22 System.out.println("Son method()");23}24static void function(){25 // super.function();//静态方法中不能出现super/this关键字26 System.out.println("Son function()");27}28 }29 public class OverrideDemo1{30public static void main(String[] args){31 Son s = new Son();32 s.method();33 s.function();34}35 }

override方法重写

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。