Java面向对象笔记(继承)
继承思想:查阅父类功能,创建子类对象使用功能
一个子类只能有一个父类
this代表本类引用
super代表父类引用
子父类中的函数
当子类出现和父类一模一样的函数时
当子类对象调用该函数,会运行子类函数的内容
如同父类的函数被覆盖一样。
这种情况是函数的另一个特性:重写(覆盖)
?
当子类继承父类,沿袭了父类的功能到子类中
但是子类虽具备该功能,但是功能的内容却和父类不一致
这时,没有必要定义新功能,而是使用覆盖技术,保留父类的功能定义,并重写功能内容
覆盖注意事项:
1、子类覆盖父类,子类权限必须大于或者等于父类权限才可以覆盖,否则编译失败。
2、静态只能覆盖静态(优先级原因)
3、重载:只看同名函数的参数列表。
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(){}
}