/**
* 面对对象三大特性
* 1)封装:尽可能隐藏对象的内部实现细节,控制对象修改和访问的权限
* 2)继承:类与类之间特征和行为的一种赠与或获得
* 3)多态:父类引用指向子类对象,从而产生多种形态
*/
1 public class Test2 {
2 //1、封装
3 public static void main(String[] args) {
4 Cat cat = new Cat();
5 cat.setAge(2);
6 System.out.println(cat.getAge());
7 }
8 }
9 class Cat{
10 String name;
11 private Integer age; //private(私有属性):外界不可直接访问,只可通过set/get方法调用
12 String sex;
13 /*公共访问方法:set/get方法
14 作用:防止非法数据录入,保证数据的正常使用
15 set方法:使用方法参数实现赋值
16 get方法:使用方法返回值实现取值
17 */
18 public Integer getAge() {
19 return age;
20 }
21
22 public void setAge(Integer age) {
23 this.age = age;
24 }
25 }
/*2、继承:将一方拥有的东西给与另一方
例如:动物与狗 动物是父类,狗是子类
父类可以有多个:狗<动物<生物<物质 狗既是动物的子类,也是生物的子类
Object类:一切类的父类。根源类(万物皆对象的概念)
父类的抽象:从多个子类中抽取共性的特征和行为;以实现复用
例如:鱼、狗、羊、牛都是动物的子类 共性的特征和行为:都有年龄,都会吃东西、睡觉等等
方法重写:当父类的方法无法满足子类时,子类可以定义与父类相同的方法进行重写
不可继承:构造方法、private(私有属性)修饰的属性或方法、不同包目录下的default修饰的属性或方法
*/
1 class Test3{
2 public static void main(String[] args) {
3 B b= new B();
4 b.print();
5 }
6 }
7 class A{
8 int value = 10;
9
10 public A(){}
11 }
12 //extends:继承 此处意思:B是A的子类
13 class B extends A{
14 int value = 20;
15 public void print() {
16 int value = 30;
17 System.out.println(value);
18 //this:类中的默认引用,代表当前实例
19 System.out.println(this.value);
20 //super:可直接访问从父类继承的属性和方法
21 System.out.println(super.value);
22 }
23 public B(){
24 //super:在构造方法的首行时,会调用父类的构造方法
25 super();
26 }
27 }
/**
* 3、多态:父类引用指向子类对象,从而产生多种形态
* 例:猫 既是一种猫科动物,也是一种动物,还是一种生物;从不同的角度看待同一种对象,关注点也不同
*
*/
1 class TestConvert{
2 public static void main(String[] args) {
3 //向上转型(装箱):父类引用包含子类对象
4 Animal am = new Sheep();
5 //向下转型(拆箱):将父类引用的子类对象,强转为子类本身类型
6 //Sheep sheep = (Sheep) am;
7 }
8 }
9 class Animal{
10 public void eat(){
11 System.out.println("动物在吃东西...");
12 }
13 }
14 class Sheep extends Animal{
15 public void eat(){
16 System.out.println("羊在吃草...");
17 }
18 }