继承
来源:互联网 发布:strutting it 编辑:程序博客网 时间:2024/05/21 17:50
1.继承:——>泛化的过程
(1)作用:减少代码重复、提高代码的复用性
(2)通过extends来实现继承
(3)父类/基类:所有子类所共有的属性和行为
子类/派生类:子类所特有的属性和行为
(4)子类继承父类后,子类具有:子类+父类
(5)一个父类可以创建多个子类
一个子类只能有一个父类——>单一继承
(6)继承具有传递性
(7)java规定:构造子类之前必须先构造父类
在子类构造方法中若没有调用父类构造方法。
则默认super()来调用父类的无参构造,
若子类构造方法中自己调用了父类的构造方法,
则不再默认提供
super()调用父类的构造方法必须位于子类构造的第一行
2.super:指代当前对象的父类对象
(1)super.成员变量名----------访问父类的成员变量
(2)super.方法名()------------调用父类的方法
(3)super()-------------------调用父类的构造方法
3.方法的重写(override):重新写、覆盖
(1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
(2)重写方法被调用时,看对象的类型
子类 1:
子类 2:
执行程序:
结果如图:
结果如图:
(1)作用:减少代码重复、提高代码的复用性
(2)通过extends来实现继承
(3)父类/基类:所有子类所共有的属性和行为
子类/派生类:子类所特有的属性和行为
(4)子类继承父类后,子类具有:子类+父类
(5)一个父类可以创建多个子类
一个子类只能有一个父类——>单一继承
(6)继承具有传递性
(7)java规定:构造子类之前必须先构造父类
在子类构造方法中若没有调用父类构造方法。
则默认super()来调用父类的无参构造,
若子类构造方法中自己调用了父类的构造方法,
则不再默认提供
super()调用父类的构造方法必须位于子类构造的第一行
2.super:指代当前对象的父类对象
(1)super.成员变量名----------访问父类的成员变量
(2)super.方法名()------------调用父类的方法
(3)super()-------------------调用父类的构造方法
3.方法的重写(override):重新写、覆盖
(1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
(2)重写方法被调用时,看对象的类型
父类:
package oo.day03;public class Person {String name;int age;String address;Person(String name,int age,String address){this.name=name;this.age=age;this.address=address;}void sayHi() {System.out.println("我的名字是:"+name+",我今年"+age+"岁了,我家住"+address);}}
子类 1:
package oo.day03;public class Student extends Person{String stuId;Student(){super("zhangsan",25,"廊坊");this.stuId="002390";}void study() {}void sayHi() {System.out.println("我的名字是:"+name+",我今年"+age+"岁了,我家住"+address+"学号为:"+stuId);}}
子类 2:
package oo.day03;public class Teacher extends Person{double salary;Teacher(String name,int age,String address,double salary){super(name,age,address);this.salary=salary;}void teach() {}void sayHi() {System.out.println("我的名字是:"+name+",我今年"+age+"岁了,我家住"+address+"工资为:"+salary);}}
执行程序:
package oo.day03;public class Test {public static void main(String[] args) {Student zs=new Student();zs.sayHi();Teacher ls=new Teacher("lisi",36,"河北",2678.5);ls.sayHi();}}
结果如图:
4.重写遵循"两同两小一大"原则:
(1)两同:
1.1)方法名称相同
1.2)参数列表相同
(2)两小:
2.1)子类方法的返回值类型小于或等于父类的
2.2.1)void时,必须相等
2.2.2)基本类型时,必须相等
2.2.3)引用类型时,小于或等于
2.2)子类抛出的异常小于或等于父类的---------异常之后
(3)一大:
3.1)子类方法的访问权限大于或等于父类的-----访问控制修饰符
3.重写与重载的区别:——>重点
(1)重写(override)
1.1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
1.2)遵循“运行期绑定”,看对象的类型来调用方法
(2)重载(Overload)
2.1)发生在一个类中,方法名称相同,参数列表不同
2.2)遵循“编译期绑定”,看引用的类型来绑定方法
4.向上造型:
(1)父类型的引用指向子类的对象
(2)能点出来什么,看引用的类型
C/S:客户端/服务器
B/S:浏览器/服务器——>参与
package oo.day03;public class UpDemo {public static void main(String[] args) {Foo o4=new Foo();o4.show();Eoo o5=new Foo();//向上造型o5.show();}}class Eoo{void show() {System.out.println("父类show");}}class Foo extends Eoo{void show() {System.out.println("子类show");}}
结果如图:
阅读全文
0 0
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- TableLayout与ViewPager联动
- 【算法导论33】跳跃表(Skip list)原理与java实现
- QT之使用QMutex/ QMutexLocker互斥量同步线程小例子
- Asp.net MVC3 自定义HtmlHelper控件
- The SetStack Computer UVA
- 继承
- CentOS7 安装Chrome浏览器
- Java命名约定
- 学习u3d中的专业名词
- React Native顶-底部导航使用小技巧
- Web Service核心知识
- C++STL之堆
- 全局唯一ID--UUID介绍、JAVA中UUID的使用
- 想为 iPhone X 做交互设计?你需要读这篇文章