Java学习笔记—面向对象三大特征(封装、继承、多态)
封装


- 封装实现三部曲
- 将属性进行类私有化(private)
- 提供一个公共的(public)set方法,让外部方便对类内部进行赋值
- 提供一个公共的(public)get方法,让外部对类内部的属性取值
- Account.java
package com.test.encap;
public class Account {
private String name;
private double count;
private String key;
public String getName() {
return name;
}
public Account() {
}
public Account(String name, double count, String key) {
this.setName(name);
this.setCount(count);
this.setKey(key);
}
public void setName(String name) {
if (name.length() >= 2 && name.length() <= 4){
this.name = name;
}else {
System.out.println("输入名字长度错误,设定默认值");
this.name = "defultName";
}
}
public double getCount() {
return count;
}
public void setCount(double count) {
if (count > 20.0){
this.count = count;
}else {
System.out.println("输入余额小于20,给出默认值21");
this.count = 21.0;
}
}
public String getKey() {
return key;
}
public void setKey(String key) {
if (key.length() == 6 ){
this.key = key;
}else {
System.out.println("输入密码长度有误,设定默认值000000");
this.key = "000000";
}
}
public void showInfo(){
System.out.println("name = " + name + " count = " + count);
}
}
- AccountTest.java
package com.test.encap;
public class AccountTest {
public static void main(String[] args) {
Account account = new Account();
account.setKey("666666");
account.setName("小明");
account.setCount(23.0);
account.showInfo();
}
}
继承
- 解决代码复用问题,将多个类存在相同的属性和方法是,可以从这些类中抽象出弗雷,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends来声明继承父类即可
- 继承原理图



- 1.子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供的公共的方法去访问
-
- 子类必须调用父类的构造器,完成父类的初始化
-
- 当创建子类对象是,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过
-
- 如果希望指定去调用父类的某个构造器,则显示的调用一下:super(参数列表)
-
- super在使用时,必须放在构造器的第一行(现有爸爸,再有儿子)
-
- super()和this()都只能放在构造器第一行,因此这两个方法不饿能共存在一个构造器中
-
- java所有类都是Object类的子类, Object是所有类的基类
-
- 父类构造器的嗲用不限于直接父类,将一直往上追溯直到Object类(顶级父类)
-
- 子类最多只能继承一个父类(指直接继承), 即java中是单继承机制。
-
- 不能滥用继承,子类和父类之间必须满足is-a的逻辑关系
继承的本质

多态的具体体现
- 对象的多态体现
1、一个对象的编译类型和运行类型可以不一致
(Animal animal = new Dog() animal编译类型是Animal, 运行类型是Dog)
2、编译类型在定义对象时,就去欸的那个了,不能改变
3、运行类型时可以变化的
4、编译类型看定义时= 的左边, 运行类型看 = 的右边

浙公网安备 33010602011771号