封装
数据的隐藏,应禁止直接访问一个对象中数据的实际表示,应通过操作接口来访问,称为信息隐藏
属性私有,get/set
-
1.提高程序的安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4.系统过客维护增加了
package oop.demo04; //类 private public class Student { //属性私有 //名字 private String name; //学号 private int id; //性别 private char sex; private int age; //提供一些可以操作这个属性的方法 //提供一些public的get、set方法 //get获得 public String getName(){ return this.name; } //set给数据设置值 public void setName(String name) { this.name = name; } //alt+Insert ---> Getter and Setter public int getId() { return id; } public void setId(int id) { this.id = id; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { if (age > 120 || age < 0) {//不合法 this.age = 3; } else { this.age = age; } } //学习() //睡觉() } /* package oop.demo04; 1.提高程序的安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4.系统过客维护增加了 public class Application { public static void main(String[] args) { Student s1 = new Student(); s1.setName("王东"); System.out.println(s1.getName()); s1.setAge(999);//不合法的 System.out.println(s1.getAge()); } } */
继承
-
exrands的意思是“扩展”。子类是父类的扩展
-
JAVA类只有单继承,没有多继承(一个儿子只能有一个爸爸,一个爸爸可以有多个儿子)
-
继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等
-
继承关系的两个类,一个位子类(派生类),一个父类(基类)。子类继承父类,使用关键字extends来表示
-
子类和父类之间,从意义上讲应该具有“is a”得关系
-
object类
-
super类
-
方法重写
//Person 人 public class Person { }
import oop.Demo02.Person; //Student is 人 public class Student extends Person { }
import oop.Demo02.Person; //老师 is 人 public class Teacher extends Person { }
package oop; import oop.demo05.Student; public class Application { public static void main(String[] args) { Student student = new Student(); student.say(); System.out.println(student.getMoney()); } } /* package oop.demo05; //Person 人 :父类 public class Person { private int money = 10_0000_0000; public void say(){ System.out.println("说了一句话"); } public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } } package oop.demo05; //Student is 人 public class Student extends Person { //ctrl+H 可以查看继承 } */
super ---- this
super注意点:
-
1.super调用父类得构造方法,必须在构造方法的第一个
-
2.super必须只能出现在子类的方法或者构造方法中
-
3.super和this不能同时调用构造方法
super VS this
-
1.代表对象不同
-
this:本身调用者这个对象
-
super:表达父类对象的一个用
-
2.前提
-
this:没有继承也可以使用
-
super:只能在继承条件才可以使用
-
3.构造方式
-
this():本类的构造
-
super():父类的构造
package oop; import oop.demo05.Person; import oop.demo05.Student; public class Application { public static void main(String[] args) { Student student = new Student(); //student.test("王东"); //student.test1(); } }
package oop.demo05; //Student is 人 public class Student extends Person { public Student() { //隐藏代码:调用了父类的无参构造 super();//调用父类得构造器必须放在子类构造器得第一行 System.out.println("Studet无参执行了"); } private String name = "wangdong"; public void print(){ System.out.println("Student"); } public void test1(){ print(); this.print(); super.print(); } public void test(String name){ System.out.println(name); System.out.println(this.name); System.out.println(super.name); } }
package oop.demo05; //在java中,所有的类,都默认直接或者间接继承object //Person 人 :父类 public class Person { public Person(){ System.out.println("Person无参执行了"); } protected String name = "wagdong"; //私有的东西无法被继承private public void print(){ System.out.println("Person"); } }