java面向对象
java之前也学过一些,但是之前学的过于零散,之后对这里进行了一些整理
什么是面向对象,我感觉说这个是应该和面向过程比较来说更为清晰。
举一个简单的例子,就是关门。面向过程分析需要的动作,把是一个个的动作按顺序的组合。而面向对象是,描述人在关门中的行为。
面向过程:强调的是功能行为,一种过程,先干啥,再干啥;
面向对象:将功能封装到对象里,强调的是具备某功能的对象;
按照面向对象的思想,可以把任何的东西看做对象!
面向对象的三个特征:
封装
继承
多态
封装:把同一类事物所具有的共同属性和共同行为功能抽取到Java类中的过程称为封装并将类里面的数据和行为进行保护。常用方法为:设置数据的访问修饰符为private,这样外部的事物就不能随意更改类中的数据。
eg:
class Car{
private String name;//私有成员,名称
private String color;//私有成员,颜色
private String size;//私有成员,大小
public String getName(){
return name;
}
public String getColor(){
return color;
}
public String getSize(){
return size;
}
public void setName(String name){
this.name=name;
}
public void setColor(String color){
this.color=color;
}
public void setSize(String size){
this.size=size;
}
}
public class Test{
public static void main(String[] args){
Car b=new Car();//实例化操作
b.setName(“宝马”);//赋值
b.setColor(“红色”);
b.setSize(“大型”);
//很明显这些过程看不到如何实现。
String name=b.getName();//取值
String color=b.getColor();
String size=b.getSize();
//最后输出结果
System.out.println(name+":"+color+":"+size);
}
继承:子类继承父类的所有非private成员。
继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
关键字:extends / super
super关键字是一个特殊的变量,它提供了对父类的方法。可以用super主动调用父类的构造方法、访问父类中的成员,调用父类的构造方类继承关系。
为什么不能多继承?会产生混乱,但可以通过接口等方法实现多继承的功能实现。
方法重载:
在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了
方法重写:继承关系,子类多父类的方法体进行了修改了我们将其定义为重写
多态:
(1)父类类型的变量可以指向子类类型的对象。
(2)能够调用什么方法取决于变量的类型。
(3)具体调用什么方法取决于对象的类型。