封装
-
该露的露,该藏的藏
-
我们程序设计要追求“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用
-
-
封装(数据的隐藏)
-
通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
-
-
属性私有,get/set
调用函数:
package opp.opp4; //封装:属性私有,get/set /* 1.提高程序的安全性 2.隐藏代码的实现细节 3.统一接口 4.系统可维护性增加 */ public class App { public static void main(String[] args) { Student s1 = new Student(); s1.setName("猫 "); System.out.println(s1.getName()); s1.setAge(80); System.out.println(s1.getAge()); } }
类:
package opp.opp4; //类 public class Student { //属性私有 //名字 private String name; //学号 private int id; //性别 private char sex; private int age; //提供一些可以操作这个属性的方法 //提供一些public 的get。setff //get 获得这个数据 public String getName(){ return this.name; } //set 给这个数据设置值 public void setName(String name){ this.name=name; } 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;//3岁小孩 }else { this.age=age; } } }
继承
-
extends的意思是“扩展”,子类是父类的扩展
-
Java中类只有单继承,没有多继承
-
继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示
-
object类
调用函数:
package opp.oop5; public class App { public static void main(String[] args) { Student student = new Student(); student.say(); student.setMoney(); System.out.println(student.getMoney()); Person person = new Person(); person.say(); } }
父类:
package opp.oop5; //在Java中,所有的类都默认继承object //父类 public class Person { private int money=1000_0000; public void say(){ System.out.println("说了一句话"); } public int getMoney(){ return money; } public void setMoney(){ this.money=money; } }
子类:
package opp.oop5; //子类;派生类 public class Student extends Person{ //Ctrl+H }
super详解
-
super注意点:
-
super调用父类的构造方法,必须在构造方法的第一个
-
super必须只能出现在子类的方法或者构造方法中
-
super和this不能同时调用构造方法!
-
-
this:
-
代表对象不同: this:本身调用者这个对象 super:代表父类对象的应用
-
前提: this没有继承也可以使用 super只能在继承条件才可以使用
-
-
构造方法: this();本类的构造 super();父类的构造
调用函数:
public class App { public static void main(String[] args) { Teacher teacher = new Teacher(); }
子类:
package opp.oop5; //子类;派生类 public class Teacher extends Person{ public Teacher() { //隐藏代码super():调用了父类的无参构造 //调用父类的构造器,必须要在子类构造器的第一行 System.out.println("Teacher无参执行了"); } private String name="jia"; public void test(String name){ System.out.println(name); System.out.println(this.name); System.out.println(super.name); } }
父类:
public class Person { public Person() { System.out.println("Person无参执行了"); } protected String name="mao"; }