1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > (JAVA学习笔记) 类的继承 super 方法的重写 多态

(JAVA学习笔记) 类的继承 super 方法的重写 多态

时间:2018-09-21 16:19:00

相关推荐

(JAVA学习笔记) 类的继承 super 方法的重写 多态

文章目录

类的继承,super,方法的重写,多态1.类的继承代码演示:2.super和this代码演示:3.方法的重写代码演示:4.多态代码演示:

类的继承,super,方法的重写,多态

1.类的继承

继承的本质是对某一批类的抽象,从而实现对世界更好的建模extends的意思是“扩展”。子类是父类的扩展JAVA中类只有单继承,没有多继承!(一个儿子只有一个爸爸,但爸爸可以有多个儿子)继承是类和类之间的一种关系。除此之外,类和类的关系还有依赖,组合,聚合等。继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示子类和父类之间,从意义上讲应该具有“is a”的关系

代码演示:

父类Person:

//Person 人:父类//在java中,所有的类都间接或直接继承Object类public class Person /*extends Object*/{public int getMoney() {return money;}public void setMoney(int money) {this.money = money;}//public可被继承,private则不能private int money = 10_0000_0000;public void say(){System.out.println("说了一句话");}}

子类Student:

//学生 is 人 :子类//子类继承了父类就会拥有父类的全部方法public class Student extends Person{//ctrl + h 显示继承关系}

main方法:

public static void main(String[] args) {Student student = new Student();student.say();System.out.println(student.getMoney());}

结果:

2.super和this

super注意点:

super调用父类的构造方法,必须在构造方法中的第一个super必须只能出现在子类的方法或者构造方法中!super和this不能同时调用构造方法

super 和 this 的区别:

代表的对象不同:this:本身调用这个对象。super:代表父类对象的引用前提:this:没有继承也可以使用。super:只有继承条件才可以使用构造方法:this() 本类的构造。super():父类的构造。

代码演示:

父类:Father类:

public class Father {protected String name = "爸爸";public void print(){System.out.println("打印爸爸");}}

子类:Son类:

public class Son extends Father{private String name = "儿子";public void print(){System.out.println("打印儿子");}//方法的调用public void test1(){this.print();super.print();}//对象的调用public void test2(){System.out.println(this.name);System.out.println(super.name);}}

main方法:

public static void main(String[] args) {Son son = new Son();son.test1();son.test2();}

输出结果:

3.方法的重写

重写:需要有继承关系,子类重写父类的方法!

方法名必须相同参数列表必须相同修饰符:范围可以扩大但不能缩小; public>prtected>private抛出的异常范围可以被缩小,但不能扩大;ClassNotFoundException -->Exception(大)重写,子类的方法和父类必须一致,方法体不同

为什么需要重写?

父类的功能,子类不一定需要,或者不一定满足

快捷键 :alt+inert ->override;

代码演示:

父类B:

public class B {public void test(){System.out.println("Hello,B");}}

子类A:

public class A extends B{@Overridepublic void test() {System.out.println("Hello,A");}}

main方法:

public static void main(String[] args) {A a = new A();a.test();}

4.多态

即同一方法可以根据发送对象的不同而采用不同的行为方式。

一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类,有关系的类)。

多态存在的条件:

有继承关系子类重写父类方法父类引用指向子类对象

注意:多态是方法的多态,属性没有多态。

代码演示:

父类Person:

public class Person {public void run(){System.out.println("run");}}

子类Student:

public class Student extends Person{public void run(){System.out.println("son");}}

main方法:

public static void main(String[] args) {//一个对象的实例类型是确定的//但是可以指向的引用类型就不确定了:父类的引用指向子类//Student 能调用的方法都是自己的或者继承父类的Student s1 = new Student();//Person 父类型,可以指向子类,但是不能调用子类独有的方法Person s2 =new Person();//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大s1.run();//如果子类重写了父类的方法,执行子类的方法s2.run();}

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