Java封装

1.封装
就是对外隐藏实现的细节
a)属性封装:就是使用private 修饰属性,提供共有的 stter\gettert访问器 操作对应的属性
如果只有setter 方法,是只写
如果只有getter 方法,是只读
b)行为封装:把一些功能封装到方法中,实现代码的重用
c)模块封装:
jdbc
jstl
加密
验证码
发邮箱
类中的属性都要使用 私有,可以根据需要合理的提供相应的访问器

业务扩大,开展 UI课程,招聘UI老师,同样也要对UI老师测试
python,招聘Python老师
2.继承:
如果两个类中存在相同的内容,而这两个类又满足 is a 的关系或者 都与第三个类 满足is a 的关系
那么就可以把 相同的内容 进行提取,可以减少代码的重复
Java老师 是一个 老师
UI老师 是一个 老师
Python老师 是一个 老师
优点:可以减少代码的重复,提高代码的服用性
a)重写(override):就是在子类中出现和父类中签名相同的方法


注解(annotation):就是给编译器看的,让编译器在编译时帮我们检查代码的结构
注释:给程序员看的或者让解析器忽略解析


@Deprecated:表示 该方法或者该类 在将来的版本中会被去除,不建议使用
@Override:重写,只能放在方法上
b)继承:子类继承父类后,自动拥有父类的属性和行为


3.多态:一个父类可以表现为多个子类的能力
Teacher java=new JavaTeacher();

Teacher ui=new UITeacher();
a)必须使用父类类型的引用 指向 子类类型的对象;
b)必须在子类中重写父类中的方法
使用:尽量使用父类的类型作为方法的参数使用

Public void test(Teacher tea){
tea.detail();
tea.teaching();
}
4.Java 只有一个类没有父类 Object,它是所有类的父类
5.在继承关系下创建子类对象的过程
a)加载类
b)通过new 调用子类的构造方法
c)调用父类的构造方法
d)直到 Object 为止
e)给父类中的属性赋值
f)执行父类的构造方法
g)给子类中属性赋值
h)执行子类的构造方法


6.子类如何调用父类的构造方法
因为在子类构造方法中 编译会自动添加super() 对父类构造的引用
所以:如果父类中没有空参构造 那么必须在子类构造方法中 显示的通过super指明对父类构造的调用
改造计算器:
---------------------------------------------------------------------------------------------------
1.继承:一个类继承另一个类,自动拥有父类的属性和行为
发现类和类之间有共同的内容,且满足 is a 的关系
2.继承关系下 创建子类对象的过程
a)加载类
b)调用子类的构造方法
c)调用父类的构造方法
d)直到Object 为止
e)给父类中的属性赋值
f)执行父类的构造方法
g)给子类中属性赋值
h)执行子类的构造方法
3)子类中如何调用父类的构造方法
super(参数)
注意:如果子类中没有显示的写明 super() ,编译器自动添加
如果父类中没有空参构造,那么子类必须显示使用 super()指明对构造方法的调用
4.super和this的用法:
a)作为构造方法的引用
super() 表示在子类构造方法中调用父类的构造方法,必须是第一句
this()  表示在本类中访问其他构造方法,必须是第一句
b)作为对象使用
super 表示父类对象,在子类中通过super.xxx 的方式访问父类的内容
this 表示本来对象,在本类中 访问其他程序
Java包:
java.lang Java语言包,在任何程序中,该包都被自动导入
java.awt 图形用户界面包
java.awt.event 图形用户界面事件处理包
java.sql 数据包访问包
导入包中的某个类: import 包名.子包类.类名


5.访问控制符:对类中内容控制(那些成员在什么范围中可以访问)
public:本项目中的所有类,都可以访问 湖里水
protected:受保护可以在子类中访问 自然保护区
不写,表示默认的,友好的,包级别,同一个包内的类可以访问 班级的水
private:表示私有的 自己的水杯
----------------------------------------------------------------------------------------------
位置 private default protected public
本类 可以 可以    可以 可以
同包 不可以 可以    可以 可以
不同包子类 不可以 不可以    可以 可以
不同包类 不可以 不可以   不可以 可以
-----------------------------------------------------------------------------------------------
protected 使用super访问   (不同包子类) 
6.方法覆盖:子类中出现和父类中方法签名一致的方法
方法相同
返回值类型相同
参数列表相同(个数,类型,类型的顺序)
访问修饰符 大于等于父类
7.不能被重写的方法:
构造方法
在子类中不能访问的方法
final修饰的不能覆盖
static修饰的不能覆盖
8.在横线处添加代码 保证 程序编译通过
a)方法名是否相同
b)是否构成重写
与父类中方法完全相同
c)是否构成重载
方法名相同
参数列表不同
-----------------------------------------------------------------------------------
父类类型的引用 指向 子类类型的对象;
只能访问父类中定义方法或被子类覆盖的方法
子类种特有的方法无法访问、
如果就是要访问子类中特有的内容,必须把父类转化成子类的
-------------------------------------------------------------------
9.多态:一个父类可以表现为多个子类的能力
a)具备的条件:
1)要有继承
2)要有重写
3)使用父类引用指向子类对象
b)多态的分类:
1)静态多态(编译时多态),方法重载
2)动态多态(运行时多态),方法重写
--------------------------------------------------------------------------------
计算机的升级:
public class Calculator{
private int a;
private int b;
public Calculator(int a,int b){
}
//setter,getter
public int add(){}
public int sub(){}
public int div(){}

}
开闭原则:程序一旦测试通过,就不能改变,只能通过继承的方式进行扩展


加法计算器
public class AddCalculator{
private int a;
private int b;
public AddCalculator(int a,int b){
}
//getter,setter
public int result(){
int r=a+b;
result r;
}
}


public class AddCalculator{
private int a;
private int b;
public AddCalculator(int a,int b){
}
//getter,setter
public int result(){
int r=a-b;
return r;
}
}


public class Calculator{
private int a;
private int b;

//setter,getter

public int result(){

}
}


public class AddCalculator extends Calculator{
public int result(){
int r=0;
r=getA()+getB();
return r;
}
}


public class AddCalculator extends Calculator{
public int result(){
int r=0;
r=getA()-getB();
return r;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值