2、Java面向对象笔记(继承)(抽象类)(多态)
2015-04-20 22:43
260 查看
Java面向对象笔记(继承)
继承思想:查阅父类功能,创建子类对象使用功能
一个子类只能有一个父类
this代表本类引用
super代表父类引用
子父类中的函数
当子类出现和父类一模一样的函数时
当子类对象调用该函数,会运行子类函数的内容
如同父类的函数被覆盖一样。
这种情况是函数的另一个特性:重写(覆盖)
?
当子类继承父类,沿袭了父类的功能到子类中
但是子类虽具备该功能,但是功能的内容却和父类不一致
这时,没有必要定义新功能,而是使用覆盖技术,保留父类的功能定义,并重写功能内容
覆盖注意事项:
1、子类覆盖父类,子类权限必须大于或者等于父类权限才可以覆盖,否则编译失败。
2、静态只能覆盖静态(优先级原因)
3、重载:只看同名函数的参数列表。
4、重写:子父类方法要一模一样,包括返回值也要一样。
Java面向对象笔记(抽象类)
抽象类特点:
1、抽象方法一定放在抽象类里面
2、抽象方法跟抽象类都必须被abstract关键字修饰
3、抽象类不可以用new创建,因为调用抽象方法没意义
4、抽象类中的方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
当多个类中出现相同功能,但是功能主体不同,
这是可以进行向上抽取。这时,只抽取功能定义,而不是抽取功能主体。
抽象类跟一般类没太大的区别。
该如何描述事务,就如何描述事物,只不过,该事物出现了一些看不懂的东西。
这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。
Java面向对象笔记(多态)
1、多态的体现
父类的引用指向自己的子类对象
父类的引用也接收自己的子类对象
1
2
Animal cat = new Cat();
Animal dog = new Dog();
如果想要调用子类的特有方法时
强制将父类的引用 转换成子类类型
1
Cat c = (Cat)cat
多态自始至终都是子类对象在做变化
?
2、多态的前提
必须是类与类之间有关系,要么继承,要么实现。
通常还有一个前提:存在覆盖
3、多态的好处
多态的出现提高程序的扩展性。
4、多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员
继承思想:查阅父类功能,创建子类对象使用功能
一个子类只能有一个父类
this代表本类引用
super代表父类引用
子父类中的函数
当子类出现和父类一模一样的函数时
当子类对象调用该函数,会运行子类函数的内容
如同父类的函数被覆盖一样。
这种情况是函数的另一个特性:重写(覆盖)
?
当子类继承父类,沿袭了父类的功能到子类中
但是子类虽具备该功能,但是功能的内容却和父类不一致
这时,没有必要定义新功能,而是使用覆盖技术,保留父类的功能定义,并重写功能内容
覆盖注意事项:
1、子类覆盖父类,子类权限必须大于或者等于父类权限才可以覆盖,否则编译失败。
2、静态只能覆盖静态(优先级原因)
3、重载:只看同名函数的参数列表。
4、重写:子父类方法要一模一样,包括返回值也要一样。
package com.itheima; class Extends1 { String ExtendsTool() { System.out.print("李鸿章"); return ""; } } class Extends2 extends Extends1 { String ExtendsTool() { System.out.print("袁世凯"); return ""; } } public class ExtendsDemo extends Extends1 { public void main(String[] args) { Extends2 e = new Extends2(); String name = e.ExtendsTool(); System.out.println(name); } }
Java面向对象笔记(抽象类)
抽象类特点:
1、抽象方法一定放在抽象类里面
2、抽象方法跟抽象类都必须被abstract关键字修饰
3、抽象类不可以用new创建,因为调用抽象方法没意义
4、抽象类中的方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
当多个类中出现相同功能,但是功能主体不同,
这是可以进行向上抽取。这时,只抽取功能定义,而不是抽取功能主体。
抽象类跟一般类没太大的区别。
该如何描述事务,就如何描述事物,只不过,该事物出现了一些看不懂的东西。
这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。
public class AbstractDemo { public static void main(String[] args) { Base base = new Base(); Adv adv = new Adv(); base.Study(); adv.Study(); } } abstract class Student { abstract void Study(); } class Base extends Student { void Study() { System.out.println("李鸿章"); } } class Adv extends Student { void Study() { System.out.println("袁世凯"); } }
Java面向对象笔记(多态)
1、多态的体现
父类的引用指向自己的子类对象
父类的引用也接收自己的子类对象
1
2
Animal cat = new Cat();
Animal dog = new Dog();
如果想要调用子类的特有方法时
强制将父类的引用 转换成子类类型
1
Cat c = (Cat)cat
多态自始至终都是子类对象在做变化
?
2、多态的前提
必须是类与类之间有关系,要么继承,要么实现。
通常还有一个前提:存在覆盖
3、多态的好处
多态的出现提高程序的扩展性。
4、多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员
package com.hupingyan.DuoTai; public class DuoTai { public static void main(String[] args) { DoStudent ds = new DoStudent(); ds.doSome(new baseStudent()); ds.doSome(new advStudent()); } } class DoStudent { public void doSome(Student stu) { stu.Study(); stu.sleep(); } } abstract class Student { public abstract void Study(); public void sleep() { System.out.println("睡觉"); } } class baseStudent extends Student { public void Study() { System.out.print("学习Java"); } //public void sleep(){} } class advStudent extends Student { public void Study() { System.out.print("学习HTML"); } //public void sleep(){} }
相关文章推荐
- 黑马程序员——Java面向对象之继承与多态笔记
- Java第4次实验提纲(面向对象2-继承、多态、抽象类与接口与Swing)
- Java学习笔记9(面向对象二:this、继承、抽象类)
- Java面向对象、抽象、封装、继承、多态
- Java学习笔记11(面向对象四:多态)
- C++ 学习笔记(15)面向对象程序设计(类、继承、虚函数、抽象类、using命令、容器与继承)
- 笔记——Java面向对象之继承
- 笔记——Java面向对象之多态
- Java面向对象笔记(八)继承
- Java面向对象笔记(九)多态
- Java第四次作业--面向对象高级特性(继承和多态)
- Java类、属性、方法、对象、继承、多态、接口、抽象类...
- Java基础学习中,关于面向对象中多态、抽象类、接口的总结
- Java面向对象学习笔记 -- 3(继承、向上造型、重写)
- Java面向对象学习笔记 -- 5(抽象类、接口)
- 黑马程序员——Java面向对象(二)之封装、继承、多态、接口等
- 黑马程序员——Java面向对象之抽象类 接口 内部类笔记
- 黑马程序员——Java面向对象封装继承多态
- 黑马程序员——java面向对象之封装、继承、多态
- JAVA基础学习(七)---面向对象三---继承,接口与 抽象类