Day4 java面向对象之封装、继承、多态
封装
-
程序设计追求“高内聚,低耦合”,高内聚:类的内部数据操作细节自己完成,低耦合:尽量少对外部类开放方法
-
public、private、protected与c++差不多一致
继承
-
java中只有单继承,没有多继承
-
子类继承父类,用extends关键词表示
-
子类继承父类所有的protected和public的方法和属性
-
属性拥有四种:public、private、protected、default
-
在java中,所有类都默认直接或者间接继承Object类
-
通过super去获得父类的属性,相当于父类的this指针
-
使用super调用父类的构造方法,必须在构造方法中的第一个
-
super只能出现在子类的方法或构造方法中
-
super和this不能同时调用构造方法
-
-
重写(override):与c++中的覆盖一致
-
父类和子类中方法的返回值和形参不变,方法名字相同,改变方法的逻辑
-
使用父类去new一个子类,会触发多态
-
重写的修饰符范围可以缩小但不能放大,同异常
-
public > protected > default > private
-
-
多态
-
动态编译:提高系统的可拓展性
-
java多态存在的条件
-
存在继承关系
-
子类重写父类的方法
-
父类引用指向子类,调用该方法
-
-
instanceof:判断某个对象是否属于某个类,只有两边有关系才能比较
-
静态代码块:在程序编译时就决定了,在类初始化时,先执行匿名代码块,再执行构造函数
-
可以静态导入包
import static java.lang.Math.random
-
被final修饰的类不能被继承
抽象类
public abstract class AbstractClass {
public abstract void doSomething();
}
class Instance extends AbstractClass{
-
只有方法名字,没有方法实现
-
不能够new,需要被子类继承,并重写方法
-
抽象类中可以有普通方法,抽象方法一定存在于抽象类中
接口
-
更抽象,实现约束和实现分离
public interface UserService {
void add();
void delete();
void update();
void querry();
}
public class UserServiceImp1 implements UserService{
-
可以利用接口来实现多继承,因为可以同时implements多个接口
-
在接口中,所有方法默认都是public abstract的
-
在接口中,所有常量都是 public static final的
-
接口不能被实例化
内部类
成员内部类
public class InnerClass {
public void outer() {
System.out.println("Outer");
}
public class Inner{
public void inner() {
System.out.println("inner");
}
}
public static void main(String[] args) {
InnerClass innerClass = new InnerClass();
Inner inn = innerClass.new Inner();
inn.inner();
}
}
-
好处:内部类可以获得外部类的私有属性和方法
静态内部类
-
加上static修饰的类,就不能获得外部类的私有属性和方法了
局部内部类
-
在方法里面定义的内部类
匿名内部类

浙公网安备 33010602011771号