封装
1.提高了程序的安全性,保护数据
2.隐藏代码的视线细节
3.统一接口
4.系统可维护性增加
继承
package com.hongyuan.extoss;
public class Person {
// 子类会拥有父类的全部方法
// public
// private
// protected
// default
// 一般来说属性设置私有,使用公共方法进行调用
// Java中所有的类都默认 直接或间接Object 类
// Java中只有单继承,没有多继承,只能有一个父类
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void say() {
System.out.println("说了一句话");
}
public int money = 1_0000_0000;
String name;
}
package com.hongyuan.extoss;
public class Student extends Person{
}
package com.hongyuan.extoss;
public class Demo06 {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.name);
student.setName("hongyuan");
System.out.println(student.getName());
student.say();
}
}
^h (查看类的层次结构)Type Hierarchy
super关键字 调用父类里public的方法或者属性
私有类无法被继承
super关键字注意点
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或构造方法中
- super和this不能同时调用构造方法
super对比this
- 代表的对象不同
-
this:本身调用这个对象
-
super:代表父类对象的应用
- 前提
-
this:没有继承也可以使用
-
super: 只能在继承条件才可以使用
- 构造方法
-
this():本类的构造
-
super():父类的构造
方法重写
- 需要有继承关系
- 子类重写父类方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符,范围可以扩大但不能缩小 public > Protected > Default > private
- 抛出异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)
为什么需要重新:
- 父类的功能,子类不一定需要,或者不一定满足
多态注意事项
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系 类型转换异常! ClassCastException!
3.存在条件:继承关系,方法重新,父类引用指向子类对象! Father f1 = new Son();
4.static 方法,属于类,不属于实例,无法被重新
5.final 常量,无法重新
6.private 私有方法不能被重新
7.instanceof 类型转换~ 引用类型
instanceof和类型转换
父类子类进行比较
对象的强制转换
Static final 静态及常量
抽象类
- 不能new出来
- 只能靠子类实现
- 抽象方法必须在抽象类中
- 抽象的抽象
- 提高开发效率
- 抽象类的方法必须由子类的实现
public abstract class Action {
public abstract void dosomething();
}
package com.hongyuan.Demo09;
public class A extends Action{
@Override
public void dosomething() {
System.out.println("抽象类实现");
}
}
当能通过接口定义一个系统的时候,具备了架构师的入门能力
接口
作用
1.约束
2.定义一些方法,让不同的人实现
3.public abstract
4.public static final
5.接口不能被实例化,接口中没有构造方法
6.implements可以实现多个接口
7.必须重写接口中的方法
package com.hongyuan.Demo10;
public class Action {
public static void main(String[] args) {
// 用类构造函数
userService user = new userServiceImpl();
user.screen(user.add(100));
}
}
package com.hongyuan.Demo10;
public interface userService {
int add(int sum);
int dec(int sum);
void screen(int sum);
}
package com.hongyuan.Demo10;
public class userServiceImpl implements userService{
@Override
public int add(int sum) {
return sum + 10;
}
@Override
public int dec(int sum) {
return sum - 20;
}
@Override
public void screen(int sum) {
System.out.println(sum);
}
}
内部类
略