两日内容.
- 类
- 类的成员
- 构造方法
- 方法重载
1.类
文件的扩展名 . Java
对象和类的关系:类是对象的统称,对象是类的具体实例
对象:明确,具体的事物
类:把具有相同属性、行为的事物归为一类
通过 属性/特征,行为来描述对象
属性/特征:名词,用来描述对象有什么
类的修饰符:public(默认) 公共的 必须和类文件同名
属性:语法上就是变量
位置:类内部,方法的外部
称呼:实例变量 成员变量
2.方法的重载
在同一个类中,方法名相同,参数不同(参数的个数,类型,顺序),称为方法重载
在调用重载的方法时,java根据参数的情况来决定调用哪一个方法
顺口溜:同名不同参,与返回值类型 访问修饰符无关
好处:方便调用
3.构造方法
Student wangYan=new Student();
构造方法:是一个特殊的方法
特殊1:名字必须和类名相同
特殊2:无返回值类型,无void
作用:1、创建对象时,new时调用,分配堆内存空间
2、给属性赋值
【说明】
- java 默认给每一个类添加一个public的无参数的构造方法
- 构造方法通过new来调用
- 当自己添加了有参构造函数后,那么系统就不再添加public的无参数的构造方法了
【经验】当自定义了有参构造方法后,一定要重载无参构造方法
4.封装
为什么要封装?
在给类中的属性赋值时,需要通过封装来确保值的合理性
封装:将类的实现细节(属性),隐藏在类的内部(使用privatte),通过对外的公共接口(public setXXX getXXX)对属性进行范文,从而保证了值的安全(合理).
如何使其值合理呢?
1.private:私有的,在本类内部可以访问,在类的外部不能访问一个类中使用private修饰的成员
【说明】private只能修饰 属性 方法。
2.通过在类的内部写两个public的方法
赋值方法 取值方法 来对私有属性进行赋值、取值操作
3. 在setXXX赋值方法中,对参数的合理性进行判断
package com.qf.pro2103.day10;
public class Student {
String name;
//1、属性设置为private
private int age;
//2、编写 赋值 、 取值方法方法
//2、1赋值方法
public void setAge(int age){
//3、对参数值的合理范围进行判断
if(age>=18 && age<=65){
this.age=age;
}else{
this.age=18;
}
}
//2、2取值
public int getAge(){
return this.age;
}
public void sayHi(){
System.out.println("大家好,我是:"+this.name+",今年"+this.age+"岁了!");
}
}
快捷键 alt+shift+s ---->Genearte Getters and Setters
给属性赋值有3种方式:
对象.属性名=值; 要求属性的访问修饰符一定可用
构造方法赋值,没有对值的有效范围进行判断
对象.setXXX(值) 安全的赋值方式
5.继承
为什么要用继承
继承主要解决代码重复编写的问题
概念:描述的是类与类之间的关系,通过这种关系,子类就可以访问父类中可以访问的成员
好处:代码复用
继承的关系:is-a 子类 is-a 父类
父类:不明确的
子类:明确的,具体的
如何解决:
- 找类的共通属性及方法
- 新建类,把共通的属性和方法存放在新类中
- 原有类 继承 存放共通成员的类
概念
父类:基类、超类 存放共同成员的类
子类:派生类, 存放自己独有成员的类
java继承的语法:
class 子类 extends 父类{
}
6.java继承的特点
- 单继承 一个子类只允许有一个父类
- 传递性
7. 子类继承了父类的哪些成员:
- 子类可以访问父类中public修饰的成员
- 如果子类和父类在同一包中,那么可以访问父类中默认访问修饰符修饰的成员,如果不在同一包中,则不可以访问
- 子类可以访问父类中protected修饰的成员,无论子类和父类是否在同一包中
- 构造方法不能被继承
总结
- 本周的课堂案例,做多遍 必做
- 双色球
- hr