2020.12.07韩德云
2020.12.07
一,构造函数
1,概念:
一个类内的方法名与类名相同,并且没有返回值类型,也不写void,那么,这个方法就是构造函数. 构造函数也叫做构造方法,或构造器.
例:
class Person{
//Person类的构造方法
public Person(){
}
}
2,构造函数的调用规则
(1) 实例化对象时,必须调用类的构造函数,即只要new对象,一定调用构造函数。
(2)在本类的其他构造函数中,使用this 关键字调用.
(3)构造函数不允许使用对象直接调用.
(4)构造函数调用时根据参数匹配原则调用.
(5)如果类中没有定义构造函数,那么JVM会自动为类定义无参数的构造函数.
3,为什么要定义构造函数
构造函数的作用是:在创建对象时,为对象的属性初始化.
例:
public class Order{
String orderId;
int number;
//第一种重载
public Order() {
orderId = "2031223123";//初始化
number= 3;//初始化
}
//第二种重载
public Order(String orderId,int number) {
this.orderId = orderId;
this.number= number;
}
}
4,this 关键字
this是java的关键字,表示当前正在运行的对象。
this指代当前对象的引用。
5,构造函数重载
与方法重载用法相同.
public class Order{
String orderId;
int number;
//第一种重载
public Order() {
orderId = "2031223123";//初始化
number= 3;//初始化
}
//第二种重载
public Order(String orderId,int number) {
this.orderId = orderId;
this.number= number;
}
}
6,构造函数间的调用
1,调用本类的构造函数使用this(),
2,调用父类的构造函数使用super(),
3,this();和super();写在构造函数内的第一行代码,否则不能编译。
例:
public Score(int lishi) {
this.lishi = lishi;
}
public Score() {
this(5);
}
public Score(int a,int b) {
super();
}
二,封装
面向对象的三大特征:
继承
封装
多态
1,封装的含义
封装就是保护数据的,数据就是类的成员变量,对于保护数据而言就是对数据的读取和写入
数据用四种保护方式
-
不允许读,不允许写。
-
允许读,不允许写。
-
允许写,不允许读。
-
允许读,允许写。
封装也是保护方法的,也就是方法是否允许被调用。
方法被调用的四种情况:
-
类内的其他方法是否可以调用
-
同包中的其他类是否可以调用
-
子类是否可以调用
-
任务类是否可以调用
2,如何实现分装
通过访问修饰符来实现封装
四种访问修饰符:
(1)public
public表示共有,公共的,由public访问修饰符修饰的属性或方法或类可以在任何地方被调用。public是最开放的封装。
public可以修饰属性
public可以修饰方法
public可以修饰类
(2)protected
(3)private
private可以修饰属性, 可以修饰方法, 不能修饰类。
例如:private修饰了属性和方法
**public** **class** OldBing {
**private** String name;
**private** **void** show() {
}
}
(4)默认
默认是指在类、属性、方法定义时不写任何访问修饰符,此时就是默认。
例如
**class** OldBing {
String name;
**void** show() {
**this**.name = "哈哈";
}
}
默认访问修饰符可以修饰
修饰类
修饰属性
修饰方法
由默认访问修饰符修饰的类,属性,方法可以被同包的其他类访问。
封装最常用的方法:共有方法封装私有属性
需求:在教务系统中,学生对成绩只能查询,不能修改。
分析:成绩在成绩类中使用private封装,此时成绩类外不能访问成绩属性。为成绩属性提供一个共有的方法,这个共有的方法返回成绩的值。此时成绩类外可以通过共有的方法获得私有的成绩。这种封装称为共有方法封装私有属性。
代码:
**public** **class** Score {
**private** **int** math; //private封装属性
**public** **int** getMath() {//public封装方法
**return this.math;** //public方法中返回private属性
}
**public** **void** setMath(**int** math) {
**this**.math = math;
}
**public** Score(**int** math) {
**this**.math =math;
}
}
如果只提供get方法,不提供set方法,表示只读不写。
如果只提供set方法,不同供get方法,表示只写不读
如果提供了get方法和set方法,表示可读写
如果get方法和set方法都不提供,表示不可读写。
public class Student {
public static void main(String[] args) {
Score s =new Score(60);
int math = s.getMath();//调用public方法,获取private的属性
System.out\.println(math);
}
}
评论