面向对象三个基本特征

面向对象三个基本特征

封装、继承、多态

封装

什么是封装

封装就是隐藏对象的属性和实现细节,仅向外界暴露该暴露的接口。

代码举例
public class Person {
	
	private String name;
	private String sex;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	
}
  • 将属性私有化,外界只能通过get/set方法来获取/改变属性
好处
  • 可以实现"高内聚,低耦合"
  • 提高系统可扩展性,可维护性

继承

何为继承

继承可以使得子类获得父类的所有属性和(非static)方法,子类可以重写父类的方法,实现子类特有方法

代码举例
public class Person {
	
	private String name;
	private String sex;
	
	public void run() {
		System.out.println("人在跑");
	}
	
	public void say() {
		System.out.println("我是人");
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}	
}

public class Student extends Person{

	private int sId;

	@Override
	public void run() {
		System.out.println("学生在跑1000米");
	}
	
	public int getsId() {
		return sId;
	}

	public void setsId(int sId) {
		this.sId = sId;
	}
}

public class TestOOP {

	public static void main(String[] args) {

		Student student = new Student();
		student.setName("学生");
		System.out.println(student.getName());
		student.say();
		student.run();

	}

}

在这里插入图片描述

多态

何为多态

多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。
简单来说,多态就是相同的事,一个接口可以多种实现。

代码举例
public class Person {
	
	private String name;
	private String sex;
	
	public void work() {
		System.out.println("人工作");
	}
	
	public void say() {
		System.out.println("我是人");
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
}


public class Student extends Person{

	private int sId;

	@Override
	public void work() {
		System.out.println("学生在上课");
	}
	
	public int getsId() {
		return sId;
	}

	public void setsId(int sId) {
		this.sId = sId;
	}
}


public class Teacher extends Person{
	private int salary;

	@Override
	public void work() {
		System.out.println("老师在教书");
	}
	
	public int getSalary() {
		return salary;
	}

	public void setSalary(int salary) {
		this.salary = salary;
	}
}


import org.junit.Test;

public class TestOOP {
	@Test
	public void testOOP() {
		Person person = new Student();
		person.work();
		
		//向下转型
		Student student = (Student) person;
		method(student);
		
		//如果 student 是 Person 的子类则 返回true
		System.out.println((student instanceof Person));
	}

	public void method(Person person) {
		person.work();
	}
}

在这里插入图片描述

  • 向上转型多态,向下转型用(x instanceof A)进行判断,X是A的子类返回true,反之false
  • 多态是运行时行为
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值