类的封装,继承,多态
- 该露的露,该藏的藏
1. 我们程序设计要追求“高内聚,低耦合”
高内聚 就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合: 仅暴露少量的方法给外部使用
- 封装(数据的隐藏)
- 通常,是应该禁止直接访问一个对象数据的实际表示。二应通过操作接口来访问,这称为信息隐藏
-
属性私有: get/set
```java
package Demo01;
/**
-
@author java小白松
*/
public class Application {
public static void main(String[] args) {
Student s1= new Student();s1.setName(“song”);
System.out.println(s1.getName());
s1.setAge(999);
System.out.println(s1.getAge());
}
}``` ```
package Demo01;
/**
* @author java小白松
*/
/**
* 1.提高程序的安全性,保护数据
* 2.隐藏代码的实现细节
* 3.统一的接口
* 4.系统可通过维护增加了
*/
public class Student {
//属性私有
private String name;
private int id; //学号
private char sex;// 性别
private int age;
// 提供一些可以操作这个属性的方法
//提供一些public 的get.set 方法
// get 获得这个数据
// set这个数据设置值
public String getName(){
return this. name;
}
public void setName(String name ){
this.name =name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
// alt +insert 能够快速生成set和get方法
public int getAge() {
return age;
}
public void setAge(int age) {
if ( age>130||age<0){
this.age =2;
} else {
this.age = age;}
}
}
- 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
- extends的意思是扩展,子类是父类的扩展
- Java中的类只有单继承,没有多继承
- 继承是类与类之间的一种关系,除此之外,类和类之间的关系还有依赖,组合,聚合等
- 继承是两个类的,一个为子类(派生类),一个为父类(基类。子类继承父类,使用关键字extends来表示
- 子类和父类之间,从意义上讲应该具有is a的关系
- object类
- super 这个代表父类,this是当前的属性
- 方法的重写
package Dome02;
/**
* @author java小白松
*/
// 父类
// 在Java中所有的类都直接或者间接继承object
public class Person {
private int money;
public void say(){
System.out.println("ssadfs");
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
// ctrl +h 查看继承关系
}
package Dome02;
/**
* @author java小白松
*/
// public
// protected 保护的
// default 默认的
//private 私有的
public class Application {
public static void main(String[] args) {
Student s1= new Student();
s1.say();//子类继承了父类就会父类的所有方法
}
}
package Dome02;
/**
* @author java小白松
*/
// 学生 is 人
public class Student extends Person {
}
package Dome02;
/**
* @author java小白松
*/
public class Teacher extends Person {
}
this关键字和super关键字的比较
package Dome02;
/**
* @author java小白松
*/
// 父类
// 在Java中所有的类都直接或者间接继承object
public class Person {
/* private int money;
public void say(){
System.out.println("ssadfs");
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}*/
// ctrl +h 查看继承关系
protected String name ="kuansheng";
public void print(){
System.out.println("person");
}
public Person() {
System.out.println("fuleide wucanguozao");
}
}
package Dome02;
import javax.sound.midi.Soundbank;
/**
* @author java小白松
*/
// 学生 is 人
public class Student extends Person {
private String name ="qinjianng";
public void test (String name){
System.out.println(name);//name是形式参数的name对象带着值从main方法里面来
System.out.println(this.name);//当前类中的值
System.out.println(super.name);//父类中的值
}
public void print(){
System.out.println("student");
}
public void test1(){
print();// 这个是当前这类中的方法
this.print();//这个也是当前这个类中的方法
super.print();// 父类中的方法
}// 私有的无法被继承
public Student() {
super();//这个方法被子类构造器给隐藏了,如果要显示的表示父类的构造器就得在子类的代码的最前面
System.out.println("zilei de wu can guoz zao");
}
}
package Dome02;
/**
* @author java小白松
*/
// public
// protected 保护的
// default 默认的
//private 私有的
public class Application {
public static void main(String[] args) {
Student s1= new Student();
//s1.test("秦疆");//子类继承了父类就会父类的所有方法
//s1.test1();
}
}
-
super 注意点:
-
super调用父类的构造方法,必须在构造方法的第一个位置
-
super必须只能出现在子类的方法或者构造方法中
-
super和this不能同时调用构造方法
vs this
- this: 本身调用者这个对象
- super:代表父类对象的应用
前提:
- this:没有继承也能使用
- super:只有继承了才能使用
构造方法
-
this(); 本类的构造
-
super();父类的构造
-
uper 注意点:
-
super调用父类的构造方法,必须在构造方法的第一个位置
-
super必须只能出现在子类的方法或者构造方法中
-
super和this不能同时调用构造方法
vs this
- this: 本身调用者这个对象
- super:代表父类对象的应用
前提:
- this:没有继承也能使用
- super:只有继承了才能使用
构造方法
-
this(); 本类的构造
-
super();父类的构造