Java学习_20220608
1. 构造器(alt+insert)
和类名相同,没有返回值。
new本质是在调用构造方法,初始化对象的值。
定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造。
(1)无参构造:使用new关键字,本质是在调用构造器,用来初始化值。
public Person(){
//空构造器
}
//调用
Person per = new Person();
(2)有参构造:一旦定义了有参构造,无参就必须显示定义。
public Person(){
//必须写
}
public Person(String name){
this.name = name;
}
//调用
Person per = new Person(String p){
}
2. 封装(属性私有,get/set)(alt+insert)
高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
低耦合:仅暴露少量的方法给外部使用。
/*
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增加了
*/
//在set访问器中可以设置属性的条件
3. 继承 extends
public class Student extends Person {
private String name = "小Z";
public void test(String name) {
System.out.println(name); //调用test函数时传入的name值
System.out.println(this.name); //当前类Student自己的name值
System.out.println(super.name); //Person的name值
}
}
子类无参构造函数可以调用父类无参的构造函数,默认super();在构造函数方法体中第一行。
若父类中有有参构造函数,但没定义无参的构造函数,则子类无法调用父类的无参构造函数,但可以调用有参的构造函数。
public Person(String name) {
this.name = name;
System.out.println(name);
}
public Student() {
super("name");
}

4. 重写(overvide):需要有继承关系,子类重写父类的方法!
public class Person {
public void test(){
System.out.println("person==>test()");
}
}
public class Student extends Person {
@Override
public void test() {
// super.test(); //默认调用父类的具体方法
System.out.println("student==>test()"); //写自己的方法
}
}
//调用过程
Student student = new Student();
student.test(); //student==>test()
//父类的引用指向了子类
Person p = new Student();
p.test(); //student==>test()
(1)方法名必须相同
(2)参数列表必须相同 // 不同:重载
(3)修饰符:范围可以扩大 public > protected > defult >private
(4)抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)
重写:子类的方法和父类的方法名称必须一致,方法体不同;
为什么要重写?(alt + insert:overvide)
(1)父类的功能,子类不一定需要,或者不一定满足!
浙公网安备 33010602011771号