面向对象的思想
封装性
继承性
多态性
类与对象
1.类的定义
class 类名{
成员变量;
成员方法;
}
继承
1.继承的概念
类的继承是指在一个现有类的基础上构建一个新的类,构建的新类被称作子类,现有类被称作父类。子类会自动继承父类的属性和方法。
class 父类{
...
}
class 子类 extends 父类{
...
}
2.方法的重写
在子类中重写的方法需要和父类中被重写的方法具有相同的方法名、参数列表以及返回值类型。
class Animal{
void shout() {
System.out.println("动物发出叫声");
}
}
class Dog extends Animal{
void shout() {
System.out.println("汪汪汪...");
}
}
public class Main {
public static void main(String[] args) {
Dog dog=new Dog();
dog.shout();
}
}
子类重写父类的方法时,不能使用比父类更严格的访问权限。
3.super关键字
子类重写父类后,子类无法访问父类中被子类重写过的方法。
(1)super关键字访问父类的非私有属性和非私有方法
super.属性
super.方法(参数1,参数2)
(2)super关键字访问父类的构造方法
super(参数1,参数2)
super调用父类构造方法代码必须位于子类构造方法的第一行,并且只能出现一次
4.final关键字
(1)final关键字修饰类—密封类
final关键字修饰的类不能有子类
(2)final关键字修饰方法
final关键字修饰的方法不能被子类重写
(3)final关键字修饰变量
final关键字修饰的变量是常量,不能被修改
在使用final声明变量时,变量的名称要求全部大写字母
//声明常量
public static final NAME='哈士奇';#全局常量
5.抽象类和接口
1.抽象类不能被实例化
2.包含抽象方法的类必须是抽象类
3.抽象方法只需要声明而不需要实现
4.用abstract关键字修饰
5.非抽象类继承抽象类之后,该类必须重写抽象类中的全部抽象方法
abstract class Animal{
abstract void shout();
}
class Dog extends Animal{
void shout(){
System.out.println("汪汪汪....")
}
}
接口是一种用来定义程序的协议,它用于描述类或结构的一组相关行为。
编程方式——面向接口编程
interface Animal {
int ID=1;
String name="牧羊犬";
void shout();
static int getId(){
return Animal.ID;
}
}
interface Action{
public void eat();
}
class Dog implements Animal,Action{
@Override
public void shout() {
}
@Override
public void eat() {
}
}
接口的使用
(1)定义接口
(2)定义接口实现类
接口不允许继承抽象类,但是允许接口继承接口,一个接口可继承多个接口
多态
不同类的对象在调用同一个方法时表现出的多种不同行为。
(拥有相同的父类或者实现相同的接口)
两种形式:
(1)方法的重载(静态实现)
(2)对象的多态(方法的重写—动态的实现)
对象类型的转换
(1)向上转型:子类->父类
Dog dog=new Dog();
Animal an=dog;
(2)向下转型:父类->子类
Animal an=new Dog();//向上转型
Dog dog=(Dog)an;//向下转型, 强制转换
instanceof关键字
判断一个对象是否是某个类(或接口)的实例