JavaOOP
JAVAOOP
会Java基础,面向对象的编程,基本的算法和数据结构。
Java面向对象编程
类是模板,对象是具体。
类有属性和方法。
一个类可以创建多个对象。
构造方法,构建一个对象,只能new关键字调用。
封装
数据安全。
访问修饰符
public 公共的 不受限
protected 受保护的 跨包必须是其子类
default(不写)默认的 只能在同一个包中访问
private 私有的 只能在本类中访问(能不能用)
用公有的方法访问私有的属性实现封装。
继承
类只能是单一继承
子类继承父类的属性和方法,除了私有的成员。
构造方法不能被继承,构建子类的对象必先构建父类的对象。
super(参数列表)调用父类的构造方法,必须写在第一句。
super.成员(成员属性和成员方法)调用父类的成员
final修饰的类不能被继承
抽象类可以被继承
抽象类中可以有抽象方法,也可以没有。
含有抽象方法的类一定是抽象类。
抽象类不能new,因为欠债。
多态
静态多态
编译时javac 保存时
通过方法重载来实现
方法重载:同名不同参
同名指的是方法名相同,
不同参:参数个数,参数的类型,参数的顺序
可以在同一个类中,也可以发生在继承关系中。
构造方法也可以重载。小时、分、秒。
动态多态
运行时 java run时
通过方法重写来实现
方法重写:同名又同参
同名指的是方法名相同。参数相同。相当于复制了一份。
方法重写只能发生在有继承关系的类中。
子类的方法不能比父类小气,访问修饰符要同等或更大。
多态产生的三个条件:一要继承,二要重写,三要父new子。
父类的引用指定子类的对象。
参数多态:传的参数是父类,在使用的时候传的是子类的对象。
去百度:高内聚,低耦合。
接口也能实现多态
抽象类和接口在什么情况下使用比较合理?
打破单一继承用接口。
有相同行为的不同类抽取为接口
有相同属性和方法的抽取为抽象类
接口中的方法都是公共的抽象的方法。
问:接口中的方法是静态的吗?不是。不能用接口名直接调。
接口中的属性都是公共的静态的常量。
静态:脱离于类的实例,直接可以用类名调用。
final修饰变量变常量,一定要马上初始化。
final修饰方法,方法不能被重写。
final修饰类,类不能被继承。
抽象 抽象的过程是面向对象编程的核心思想。
把相同或相似的对象归为一类的过程叫抽象。
昨天上课,写了一个工厂类,比较两个实例是否相等,答案是false;
本意是只创建一个对象,static在内存中只有一份。
单例模式:内容中有且只有一份。
static StudentService studentService;
public StudentService getStudentServiceInstace(){
if(studentService == null){
studentService = new StudentServiceImpl();
}
return studentService;;
}
构造方法私有,那就不能在外部new,于是在自己内部提供一个静态的公共方法实例化本例,以例供外部使用。