2019.8.12 总结
- 类与类的关系:可以单继承不能多继承
- 类与接口的关系:可以实现多个接口
- 接口与接口之间的关系:只可以单继承,不可以多继承
- 抽象类与接口的关系 :抽象类:是最原始的状态 接口:就是定义了一些约束
内部类
可以将一个类的定义放在里另一个类的内部,这就是内部类。广义上我们将内部类分为四种:成员内部类、静态内部类、局部(方法)内部类、匿名内部类。
静态内部类
-
外部类可以通过创建静态内部类实例的方法来调用静态内部类的非静态属性和方法
-
外部类可以直接通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法
-
静态内部类如果要访问外部的成员变量或者成员方法,那么必须是静态的
-
静态内部类可以直接调用外部类的静态属性和方法
-
静态内部类可以通过创建外部类实例的方法调用外部类的非静态属性和方法
-
在非外部类中:外部类名.内部类名 name = new 外部类名.内部类名();
-
在外部类中:内部类名 name = new 内部类名();
成员内部类
- 即在一个类中直接定义的内部类,成员内部类与普通类的成员没什么区别,可以与普通成员一样进行修饰和限制。成员内部类不能含有static的变量和方法。
局部内部类
- 在方法中定义的内部类称为局部内部类。与局部变量类似,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内的常量,和此外围类所有的成员。
- 局部内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。
- 局部内部类对象不能使用该内部类所在方法的非final局部变量。
匿名内部类
- 匿名内部类不能有构造方法
- 匿名内部类不能定义任何静态成员、方法和类。
- 匿名内部类不能是public,protected,private,static。
- 一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
面向对象
构造函数创建对象
构造函数本身比较抽象,构造函数通过new关键字创造对象是调用的函数,与普通的区别是构造函数的函数名应该首字母大写
constructor
public void Person(int age){
this.age = age;
}
public Person(){
}
instance
instance of 用于判断对象的类型以及当前对象是否通过指定函数构建而成
c instanceof SingleCar
封装
- 将东西包装在一起,然后以新的完整的形式呈现出来(即将属性和方法封装到类里面,通过添加访问修饰符来限制访问权限,以达到信息隐藏的目的)
- 将数据和方法包装进类中,加上具体实现的隐藏,共同被称作封装,其结果是一个同时带有特征和行为的数据类型。(定义类,定义其属性、方法的过程称为封装类)
- ①public(公开的):该类或非该类均可访问,权限最大
②private(私有的):只有该类可以访问,权限最小
③protected(受保护的):该类及其子类的成员可以访问,同一个包中的类也可以访问
④默认:同一个包中的类可以访问继承跟多态明天揭晓
疑问:面向对象比面向过程好吗,总觉得面向对象的代码比面向过程还要繁琐,面向对象只是方便调用,对于执行一次的时候比面向过程写的还要复杂。
来源:https://blog.csdn.net/hjm1207/article/details/99337438