------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
091_面向对象(抽象类2)_黑马程序员_Java基础视频
抽象类和一般类没有太大的不同.
该如何描述事物,就如何描述事物,只不过,该事物中出现了一些看不懂的东西.
这些的不确定的部门,也是该事物的功能,需要明确出来,但是无法定义主体..
通过抽象方法来表示.
抽象类比一般类多了个抽象函数.就是在类中可以定义抽象方法.
抽象类不不可以实例化.,
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象.
092_面向对象(抽象类练习)_黑马程序员_Java基础视频
假如我们在开发一个系统时,需要对员工进行建模,员工包含3个属性,姓名
工号以及工资,经理也是员工,除了含有员工属性外,另外还有一个奖金属性,
请使用继承的思路设计出员工类和经理类,要求类中提供必要的方法进行属性访问.
员工类 :name id pay
经理类:继承了员工,并有自己特有的奖金属性 bonus.
class Employee
{
private String name;
private int String id;
private double pay;
Employee(String name,String id,double pay)
{
this.name=name;
this.id=id;
this.pay=pay;
}
public abstract void work();
}
clss Pro extends Employee
{
Pro(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("pro work");
}
}
class Manager extends Employee
{
private int bonus;
Manager(String name,String id,double pay,int bonus)
{
super(name,id,pay);
this.bonus=bonus;
}
public void work()
{
system.out.println("manager work");
}
}
093_面向对象(模版方法模式)_黑马程序员_Java基础视频
需求:获取一段程序运行的时间.
原理:获取程序开始和结束的时间并相减.
获取时间:system.currentTimeMills();
当代码完成优化后,就可以解决这类问题.
这种方式,模版方法设计模式.
什么是模版方法呢?
在定义功能,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分
那么这时候将不确定的部分暴露出去,由该类的子类去完成.
094_面向对象(接口)_黑马程序员_Java基础视频
095_面向对象(接口2)_黑马程序员_Java基础视频
接口 interface
接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的.那么该类可以通过接口的形式来表示.
class用于定义类
interface 用于定义接口
abstract class用于定义抽象类
接口在定义时,格式特点:
1,接口中常见定义:常量,抽象方法.
2,接口中的成员都有固定修饰符.
常量 public static final
方法: public abstract
记住:接口中的成员都是public的.
接口:是不可以创建对象的,因为有抽象方法.
需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化.
否则子类是一个抽象类.
接口可以被类多实现.也是对多继承不支持的转换形式
新关键字 implements.
interface Inter
{
public static final int NUM=3;
public abstract void show();
}
class Test implements inter
096_面向对象(接口的特点)_黑马程序员_Java基础视频
接口的特点
接口是对外暴露的规则
接口是程序的功能扩展
接口可以用来多实现
类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口.
接口与接口之间可以有继承关系
097_面向对象(接口举例体现)_黑马程序员_Java基础视频
呵呵~不知道讲啥,先过啦.
098_面向对象(多态-概念)_黑马程序员_Java基础视频
099_面向对象(多态-扩展性)_黑马程序员_Java基础视频
100_面向对象(多态-转型)_黑马程序员_Java基础视频
多态:可以理解为事物存在的多种体现形态.
人 :男人,女人
动物,猫,狗
猫 x=new 猫();
动物 x=new猫();
重载,覆盖,都是函数的多态.
1多态的基本体现
父类的引用指向了自己的子类的对象,
父类的引用也可以接收自己的子类对象
2多态的前提
必须是类与类之间有关系,要么继承,要么实现.
通常还有一个前提:存在覆盖.
3多态好处
多态的出现大大的提高程序的扩展性
多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员.
4,多态的应用
Animal a =new cat();//类型提升,向上转型
如果想要调用猫的特有方法时,如何操作?
强制将父类的引用转成子类类型.向下转型.
cat c=(cat)a;
千万不要出现这样的操作,就是将父类对象转成子类类型.
我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换
多态自始自终都是子类对象在做着变化.
Animal a=new Animal();
instanceof 实例关键字
if(a instanceof Cat){}