狂神说Java
面向对象08:封装详情
package oop.demo04;
//类 private: 私有
public class Student {
//名字
private String name;
//学号
private int id;
//性别
private char sex;
//学习()
//睡觉()
//提供一些可以操作这个属性的方法!
//提供一些public的get、set方法
//get 获取这个数据
public String getName()
{
return this.name;
}
//set 给这个数据设置值
public void setName(String name)
{
this.name = name;
}
}
package oop;
//import oop.demo03.Pet;
import oop.demo04.Student;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
Student s1 = new Student();
//new Student();
//s1.name = "";
s1.setName("HL");
// String name = s1.getName();
System.out.println(s1.getName());
}
}
快捷键:
alt+insert
封装的意义:
1、提高程序的安装性,保护数据
2、隐藏代码的实现细节
3、统一接口
4、系统可维护性增加了
面向对象09:什么是继承
继承:子类是父类的扩展。
快捷键:
ctrl + H:查看继承关系
在Java中,所有的类,都默认直接或者间接继承object
Java中类只有单继承,没有多继承。
package oop.demo05;
//学生 is 人: 派生类 ,子类
//子类继承了父类,就会拥有父类的全部方法
public class Student extends Person{
private String name = "better";
public void test(String name)
{
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
}
私有的东西无法被继承!
子类的无参构造隐藏调用了父类的无参构造
package oop.demo05;
//学生 is 人: 派生类 ,子类
//子类继承了父类,就会拥有父类的全部方法
public class Student extends Person{
public Student() {
//隐藏代码:调用了父类的无参
super();//调用父类的构造器,必须要在子类的第一行
System.out.println("Student无参执行了");
}
private String name = "better";
public void test(String name)
{
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
public void test1( )
{
print();
this.print();
super.print();
}
public void print()
{
System.out.println("Student");
}
}
总结:
super注意点:
1、super调用父类的构造方法,必须在构造方法的第一个
2、super 必须只能出现在子类的方法或者构造方法中!
3、super和this不能同时调用构造方法。
Vs this:
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的引用
前提:
this:没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法:
this();本类的构造
super():父类的构造
面向对象11:方法重写
父类的引用可以指向子类
方法的调用之和左边有关