oop面向对象的编程思想
Day 2
oop
封装 继承 多态
类的定义: 一类具有相同特征和功能的事物的抽象 模板
对象: 用模板创建的变量叫做对象
2.1 静态数组
public int add(int[] arr){
...
}
2.2 动态参数列表
public int add(int ... arr){
...
}
注意事项:
1.方法参数列表中最多只能有一个动态列表
2.动态参数列表需要放在最后面
public int dong(int a , int ... arr){
...
}
方法
2.3 方法调用
2.4 oom
方法与方法之间一直循环调用
最终会造成栈溢出的错误
2.5 计算器
普通方法
访问修饰符 返回类型 名(参数列表){ 方法体 }
public int add(int a,int b){
return a+b;}
JiSuanQi jsq = new JiSuanQi()
jsq.add(2,3);
2.6 构造方法
访问修饰符 类名(参数列表){ 方法体 }
public Student(){}
new Student();
2.7 构造方法的有参和无参
构造方法如果不去定义,系统会自动添加一个无参的构造方法
但是如果定义了构造方法,则系统不会添加无参数的构造方法
建议如果加了有参的构造方法,一定要将上无参的构造方法
2.8 this方法的调用
this.属性 方法 调用 本类的 属性和方法
public Studnet(String name){
this.name=name;
}
this( ) 构造方法之间的调用
1.用来调用其他的构造方法
2.注意:构造方法调用构造方法时必须放在第一行,否则报错
2.9封装
封装 保护
访问修饰符
public 共有的 (都可用)
private 私有的 (本类可用)
protected 受保护的 (本包可用)
不写 默认的
访问修饰符可以修饰方法 和 属性
本类 子类 本包其他类 其他包其他类
public √ √ √ √
private √ × × ×
protected √ √ √ × 如果子类在其他包里可行(√)
不写 √ √ √ × 如果子类在其他包里不可行(×)
protected受保护的,同包下可用,不同包下不可用
保护属性
封装: 将属性私有化 开放公开的get set方法
//将属性私有化
private int age; //---2
//get方法 得到 属性的值
public getAge(){
return age; //return返回返回值(---2)
}
//set方法 设置属性值
public void getAge(int age){ //---1
this.age=age; //this.是将(---1)中传入的age调去(---2)
}
//后期学习中,调取值时用的都是get,set方法,而不是直接用(---2)属性
2.10 Get,Set方法
idea的快捷键 alt+insert
set 出
get 入
2.10.1 (Get Set)的输出测试
2.11继承(extends)
所有的类初始都继承Object类(对象类),即万物皆对象
爷爷类 extends Object
父类 extends爷爷
儿子类 extends父亲
1.关键字 extends 单继承多实现
单继承:子类继承父类
单继承:子类继承父类
多实现:有多个干爹,通过接口时间线
2.子类可以使用父类非私有的属性和方法
3.子类可以通过super关键字调用父类的属性或方法
this.属性或方法 调用本类自己的属性或方法
2.12继承的意义
继承关系的两个类 父类 可以提供一种默认的行为方式
子类 也可以通过重写的方式按照自己的方式执行
1.重载(overload)
同一类中方法名相同 参数列表不同
意义:方便使用者的调用
2.重写(override)
在继承关系的类中,子类中的某个方法 和父类方法的声明部分 一样
意义:在子类中可以按照自己的行为方式执行。可以进行差异化的操作
Father{
public void doBusiness(){ //声明部分
xxxxxxxx;
}
}
Son{
public void doBusiness(){ //声明部分
wwwwwwww;
}
}
猫类:Cat
品种 type
年龄 age
名称 name
卖个萌
public void maimeng(){
System.out.println("卖了个萌");
}
public void jiao(){
System.out.println("喵喵喵");
}
狗类:Dog
品种 type
年龄 age
名称 name
public void yaoweiba(){
System.out.println("摇尾巴");
}
public void jiao(){
System.out.println("汪汪汪");
}
宠物类Animal