一、封装
概念:把属性设为private,隐藏内部细节限制外部直接访问,提供公共的get和set方法间接访问,提升安全性。
get方法用于获取内部属性
set方法用于设置内部属性的值
二、面向对象三大特点(三大特征)
封装、继承、多态
三、继承
子类继承父类,所有非私有的属性和方法(不包含构造器和主方法)
Java只能单一继承,一个类只能有一个父类(可以通过多重继承来实现多继承)
(所有的类都直接或间接继承了Object,Object万类之祖)
动物继承案例1
Animal
/**
* 动物类
* 名字、吃的方法
*/
public abstract class Animal {
private String name;
/**
* 不明确是什么动物?吃的东西也不明确
*/
public abstract void eat();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Cat
/**
* 猫类
* 继承动物类的属性和行为
*/
public class Cat extends Animal{
/**
* 猫吃鱼
*/
@Override
public void eat() {
System.out.println(super.getName()+"吃鱼");
}
}
Dog
/**
* 狗类
* 共有属性和行为直接从动物类继承
*/
public class Dog extends Animal{
/**
* 重写了父类的方法
* 由于父类方法不满足使用,根据子类的特性进行重写
*/
@Override
public void eat() {
System.out.println(super.getName()+"啃骨头");
}
}
测试类
/**
* 继承
* Aniaml
* 子类:Dog Cat
*/
public class Test {
public static void main(String[] args) {
//创建Dog类对象
Dog dog = new Dog();
dog.setName("旺财");
dog.eat();
//创建猫类对象
Cat cat = new Cat();
cat.setName("花花");
cat.eat();
}
}
接口:为了弥补类只能单一继承的缺陷,后来演变为一种接口规范
拍摄接口 打电话接口
数码相机 拍照手机 固定电话
给动物都添加一个功能:跳高 Jump()
定义一个Jump接口,所有需要的这个功能的,都实现这个接口
/**
* 接口
* 接口内只能有静态常量
* public static final 默认修饰符
* 接口内的方法都是抽象方法
* public abstract 默认修饰符
*/
public interface Jump {
void jump();
}
/**
* 猫类
* 继承动物类的属性和行为
*/
public class Cat extends Animal implements Jump{
/**
* 猫吃鱼
*/
@Override
public void eat() {
System.out.println(super.getName()+"吃鱼");
}