Java面向对象编程四大特征
抽象性:抽出事物的本质特性,把某类事物的共同的特点描述出来;
封装性:把对象的属性和操作结合在一起,构成一个独立的封装体
继承性:使得一个类可以继承另一个类的属性和方法
多态性:指不同类型的对象接收相同的消息时产生不同的行为
一、抽象
我们去定义一个类的时候,就是把一类事物的共有的属性和行为提取出来,形成一个物理模型,这种研究问题的方法称为抽象。
二、封装
封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法),才能对数据进行操作。
代码示例:
package com.xx.day8;
/**
* @author 程序员小新儿
*2020年4月6日
*/
//公司职员
class Clerk{
public String name;
//private 私有的
private int age;
private float salary;
//构造函数
public Clerk(String name,int age,float salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
//通过一个成员方法去控制和访问私有的属性
/**
* @return the salary
*/
public float getSalary() {
return salary;
}
}
public class EncapsulationTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个职员
Clerk clerk = new Clerk("小新" , 21 , 1234.5f);
System.out.println("职员名字是" + clerk.name + ",薪水是" + clerk.getSalary());
}
}
三、继承
继承可以解决代码复用,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要extends语句来声明继承父类:class 子类 extends 父类 这样子类就会拥有父类定义的属性和方法。(java是单继承而c++可以多继承)
代码示例:
//小学生类
class Pupil{
//定义成员属性
private String name;
private int age;
private float fee;
//缴费 不打折
public void pay(float fee) {
this.fee = fee;
}
}
//中学生类
class MiddleStudent{
//定义成员属性
private String name;
private int age;
private float fee;
//缴费 打八折
public void pay(float fee) {
this.fee = fee * 0.8f;
}
}
//大学生类
class CollegeStudent{
//定义成员属性
private String name;
private int age;
private float fee;
//缴费 打一折
public void pay(float fee) {
this.fee = fee * 0.1f;
}
}
代码改造:
//将学生的共有属性提取出来做一个父类
class Student{
//定义成员属性
public String name;
public int age;
public float fee;
}
//小学生类
class Pupil extends Student{
//缴费
public void pay(float fee) {
this.fee = fee;
}
}
//中学生类
class MiddleStudent extends Student{
//缴费 打八折
public void pay(float fee) {
this.fee = fee * 0.8f;
}
}
//大学生类
class CollegeStudent extends Student{
//缴费 打一折
public void pay(float fee) {
this.fee = fee * 0.1f;
}
}
编程中,如果你不希望子类继承某个属性或者方法则将其声明为private。
点我进入公众号看原创链接
微信扫描下方二维码或微信公众号搜索【程序员小新儿】欢迎关注哦~