面向对象
什么是面向对象
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。
对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。
面向对象编程(OOP: object-oriented programming),面向对象三个重点封装、继承、多态
封装
简单说就是不让其他类直接操作本类的某些属性和方法。也就是被private修饰的属性和方法在其他类中不可被使用,如果需要使用就创建一个可以被访问的方法来操作他们。
比如我们定义一个变量,如下。那么我们在其他类中无法操作这个属性,
private String name;
但是我们又要操作这个属性,那么我们可以设置一个方法来对这个属性操作。
public void setName(String name){
this.name=name
}
public String getName(){
return this.name;
}
通过上面的两个方法,我们可以在其他类中对这个属性经行设置值和读取值。
继承
继承就是一个类继承了另外一个类的所有东西。也就是父类的属性和方法子类都有,父类的属性和方法在子类中可以直接调用。
在子类中我们可以使用super关键字获取父类的一切,比如方法、属性、构造函数等。
我们可以重写父类的方法,方法重写规则就是和父类的方法名称一致即可,如果重写了父类的方法,我们还可以继续让父类的方法存在我们的子类中,使用super关键字即可。
Java中的继承是单继承也就是一类只能继承一个父类,也就一个儿子只有一个父亲。
多态
多态的实现是基于继承的关系上实现的,比如动物类,那么猫类、狗类都是属性动物类都有动物的特性,但是他们又有自己的特点。
创建动物类
public class Animal {
public void say(){
System.out.println("我会说话哦");
}
public void sleep(){
System.out.println("我会睡觉");
}
}
创建Cat类
public class Cat extends Animal{
public void eat(){
System.out.println(" The cat to eat");
}
}
创建Dog类
public class Dog extends Animal{
public void call(){
System.out.println("Dog is call ");
}
}
1.子类的类型可以是父类,不需要转换如:
public class Test {
public static void main(String[] args) {
Animal cat = new Cat();//类型为父类
Cat cat1 = new Cat();//类为子类
Animal dog = new Dog();//类型为父类
Dog dog1 = new Dog();//类为子类
}
}
2.创建子类,但类型为父类,那么不能操作子类的东西。
public class Test {
public static void main(String[] args) {
Animal cat = new Cat();//类型为父类
Cat cat1 = new Cat();//类为子类
//如果引用类型名的类型为父类,那么不能操作本类的一切
// cat.eat();//编译会报错,找不到方法
}
}
3.创建子类,但类型为父类,那么不能操作子类的东西,如果非要操作也是可以的,那就类型转换。
public class Test {
public static void main(String[] args) {
Animal cat = new Cat();//类型为父类
Cat cat1 = new Cat();//类为子类
//如果引用类型名的类型为父类,那么不能操作本类的一切
((Cat) cat).eat();//把父类类型变为子类类型
}
}