Day10-面向对象02
封装
- 提高程序的安全性,保护数据。
- 隐藏代码的实现细节。
- 统一接口。
- 系统的可维护性增加了。
学生类
package com.oop.p5;
public class Student {
//属性私有
private String name;//姓名
private int age;//年龄
private char sex;//性别
private int id;//学号
//提供一些可以操作这个属性的方法!
//提供一些public的get、set方法!
//get方法获取这个数据
public String getName(){
return this.name;
}
//set方法是指数据的值
public void setName(String name){
this.name=name;
return;
}
//alt+insert快捷生成get+set方法
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>120||age<0){//不合法
this.age=3;
System.out.println("年龄不合法");
}else{
this.age=age;
}
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
主类
package com.oop;
import com.oop.p5.Student;
public class Application2 {
public static void main(String[] args) {
Student s1 =new Student();
s1.setName("小赵");
s1.setAge(18);
System.out.println(s1.getName()+"\t"+s1.getAge());
Student s2 =new Student();
s2.setName("小龚");
s2.setAge(121);
System.out.println(s2.getName()+"\t"+s2.getAge());
}
}
输出
小赵 18
年龄不合法
小龚 3
总结

继承

object
- 四个修饰符
优先级:public》protected》default》private
父类
package com.oop.p7;
//在java中,所有的父类,都默认直接或者间接继承Object类
//人 父类
public class Person {
private int age =52;
public int money = 100;
public void say(){
System.out.println("我会说话");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
子类
package com.oop.p7;
//学生 也属于人 派生类,子类
//子类继承了父类,就会拥有父类的全部方法!
public class Student extends Person{
//快捷键 ctrl+h
}
主类
package com.oop;
import com.oop.p7.Student;
public class Application3 {
public static void main(String[] args) {
Student s1 =new Student();
s1.say();
System.out.println(s1.money);
}
}
输出
我会说话
100
super
私有的东西无法被继承(private)
子类调用父类的属性

子类调用父类的方法

子类默认调用了父类的无参构造,隐藏了super();
- 子类调用父类构造器,必须要在子类构造器的第一行

super Vs this
super注意点:
- super调用父类的构造方法,必须在构造方法的第一个。
- super必须只能出现在子类的方法或者构造方法中!
- super和this不能同时调用
VS this
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提:
this:没有继承也可以使用
super:只能在继承条件才可以使用
构造方法:
this(); :本类的构造
super(); :父类的构造
方法的重写
静态方法和非静态方法区别很大
静态方法

非静态方法:重写

总结
需要有继承关系,子类重写父类的方法
子类的方法必须和父类一致,方法体不同
- 方法名必须相同。
- 参数列表必须相同。
- 修饰符:范围可以扩大但不能缩小。public》protected》default》private
- 抛出的异常:范围,可以被缩小,但不能扩大。ClassNotFoundException》Exception(大)
为什么要重写:
父类的功能,子类不一定需要,或者不一定满足。
Alt+Insert:选择Override重写
3388

被折叠的 条评论
为什么被折叠?



