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