欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面向对象的三大特性——封装、继承、多态

程序员文章站 2022-06-11 22:27:53
...

一、封装

封装简单来讲就是把一个对象的属性通过添加一个关键值来进行限制他的作用范围,从而对他进行保护。

类成员的访问修饰(包括类属性,和类方法)

作用域      同一个类中     同一个包中     不同包子类中       任何地方
修饰符

private      可以            不可以       不可以         不可以

默认修饰符   可以              可以       不可以         不可以

protected    可以              可以         可以         不可以

public       可以              可以         可以           可以

下面给大家举一个例子:

public class People {
	private String name;
	private String gender;
	private int age;
	
	public String getName(){
		return name;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getGender(){
		return gender;
	}
	public void setGender(String gende){
		if(gender.equals("男") || gender.equals("女")){
			this.gender = gender;
		}
		else{
			System.out.println("输入的性别不合法!!!");
		}
	}
	public int getAge(){
		return age;
	}
	public void setAge(int age){
		if(age<0||age>150){
			System.out.println("您输入的年龄为:"+age+",该年龄不合法,将重置!!!");
			return;
		}
		else{
			this.age = age;
		}
	}

如同上面这段代码,通过封装你就可以约束别人在调用时输入的值,如果输入错误就不会改变你的初始值,这样就起到了保护属性的作用,这就是封装。

二、继承(extends)

继承简单来说就是把一类对象的共有属性写在一个总类里面,后面的子类去调用父类,那么父类里已有的属性和方法就不需要在子类中重复的写,直接继承之后就拥有了父类的所有方法,这样就避免的代码的冗余。

下面给大家看一个例子:

这是一个宠物父类,每一个动物都有自己的名字,年龄和主人的亲密度属性:

public class Pet {
	private String name = "无名氏";
	private int age = 100;
	private int love = 0;
	
	
	public Pet(){
	}
	public Pet(String name){
		this.name = name;
	}
	public Pet(String name,int age,int love){
		this.name = name;
		this.age = age;
		this.love = love;
	}
	
	public String getName(){
		return this.name;
	}public void setName(String name){
		this.name = name;
	}
	
	public int getAge(){
		return age;
	}
	
	public void setAge(int age){
		this.age = age;
	}
	
	
	public int getLove(){
		return this.love;
	}
	
	public void setLove(int love){
		if(love < 0){
			System.out.println("亲密度不能为负数!");
			this.love = 60;
			return;
		}
		else{
			this.love = love;
		}
	}
	

	public void Print(){
		System.out.println("宠物的自白:\n我的名字叫"+this.getName()+
				"健康值是:"+this.getAge()+"和主任的亲密度"+this.getLove());
	}
}

在写两个宠物子类来继承父类:

在子类里面你继承了父类拥有了父类的属性,并且也可以在自己的类中写上自己独有的类型。

public class Dog extends Pet{
	String sex = "哈巴狗";
	
	
	public Dog(){
	}
	public Dog(String name,int age,int love,String sex){
		super(name,age,love);
		this.sex = sex;
	}
	
	public void setSex(String sex){
		this.sex = sex;
	}
	public String getSex(){
		return this.sex;
	}
	public void PetInfo(){
		super.Print();
		System.out.println("我是一只"+this.getSex());
	}
public class Dack extends Pet{
	String color = "黄三色";
	
	public String getColor(){
		return this.color;
	}
	public void setColor(String color){
		this.color = color;
	}
	public void Print(){   
		super.Print();
		System.out.println("我是一只"+this.getColor());
	}
	
}

最后创建一个main方法:

	public static void main(String[] args) {
		Dog dog = new Dog("多多",100,80,"jiwawa");
		dog.Print();
	}

三、多态

就如上面的例子,多态就能使最后的调用变得更加灵活。

main方法:

	public static void main(String[] args) {
		Pet dog = new Dog("多多",100,80,"jiwawa");
		dog.Print();
	}