oop(面向对象程序设计)具有三大特性:封装、继承、多态
一、封装
封装就是讲类的信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类的实现隐藏信息的操作和访问。
实现封装
1、需要修改属性的访问控制符(private)
2、创建getter/setter方法(用于属性读写)
3、在getter/setter方法中加入属性控制语句(用于判断属性值的合法性)
public class Student{ private String name; public void setName(String name){ this.name=name; } public String getName(){ return name; }
二、继承
继承是类与类的一种关系,比如说,狗属于动物。可以看成狗类继承了动物类,那么狗类就是动物类的子类(派生类),动物类就是狗类的父类(基类)。在Java中一个子类只能有一个父类。
//父类:动物类 public class Animal{ public int age; public String name; public void eat(){ System.out.println("动物具有吃东西的本领!"); } } //子类:狗类 public class Dog extends Animal { }
三、 多态
多态指的是对象的多种形态。多态有两种:引用多态和方法多态。继承是多态的实现基础。
1.引用多态
父类的引用可以指向本类的对象;父类的引用可以指向子类的对象。
//父类:动物类 public class Animal{ public int age; public String name; public void eat(){ System.out.println("动物具有吃东西的本领!"); } } //子类:狗类 public class Dog extends Animal { } //测试类 public class Test{ public static void main(String[] args) { //父类的引用可以指向本类的对象 Animal ani1 = new Animal(); //父类的引用可以指向子类的对象 Animal ani2 = new Dog(); } }
2. 方法多态
创建父类对象时,调用的方法为父类方法;
创建子类对象时,调用的方法是子类重写的方法或继承自父类的方法;
不允许通过父类的引用调用子类独有的方法。
//父类:动物类 public class Animal{ public int age; public String name; public void eat(){ System.out.println("动物具有吃东西的本领!"); } } //子类:狗类 public class Dog extends Animal { public void eat(){ System.out.println("狗是吃肉的。"); } } //测试类 public class Test{ public static void main(String[] args) { //父类的引用可以指向本类的对象 Animal ani1 = new Animal(); //父类的引用可以指向子类的对象 Animal ani2 = new Dog(); //输出动物具有吃的本领 ani1.eat(); //输出狗是吃肉的 ani2.eat(); } }