面向对象三大特性

JavaSE 专栏收录该内容
13 篇文章 0 订阅

面向对象三大特性

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

封装

封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

封装的好处

  1. 隐藏类的实现细节;
  2. 只能通过规定方法访问数据;
  3. 方便加入控制语句;
  4. 方便修改实现;

封装的步骤

  1. 修改属性可见性 – 设为private
	public class pet {
		// 创建属性并修改可见性
		private String name;
		private int age;
	}
  1. 创建get/set方法 – 用于属性读写
	// 创建get方法
	public String getName() {
		return name;
	}
	// 创建set方法
	public void setName(String name) {
		this.name = name;
	}
  1. 在get/set方法中加入控制语句 – 对属性进行合法判断
	public void setAge(int age) {
		// 加入控制语句
		if(age > 0 && age < 100){
			this.age = age;
		}
	}

继承(is-a)

继承:使用继承可以优化代码,将重复代码抽取到父类当中,减少代码量,方便修改代码

使用继承

  1. 编写父类
class pet {
	//公共属性和方法
}
  1. 编写子类,继承父类
class dog extends pet {
	//子类特有的属性和方法
}
class cat extends pet {
	//子类特有的属性和方法
}

继承的特性

  • 单根性
    只能继承一个类,不能多重继承

  • 传递性
    从父类继承来的元素,可以被子类继承

子类访问父类成员

使用super关键字

  • 访问父类构造方法
	//构造器
	public dog() {
		// 访问父类构造方法
		// super();
		super("二哈",2);
	}
  • 访问父类构造属性
	super.name;
  • 访问父类方法
	super.print();

不可被继承的资源

  • 不可继承被私有化的属性和方法
  • 构造方法

多态

多态:指一个行为,拥有多种不同表现形式。 例:小明拥有人类形态同时拥有学生形态

优点: 可扩展性强

使用多态实现思路

  1. 编写父类
	class Pet {
		//吃东西
		public void eat(){		
		}
	}
  1. 编写子类,子类重写父类方法
	class Dog extends Pet {
		//重写父类方法
		public void eat(){
			System.out.println("吃骨头");
		}
	}
  1. 运行时,使用父类类型,子类对象
	class cat extends Pet {
		//向上自然转型
		Pet pet = new Dog();
	}

何时使用多态

1.当父类为方法参数
2.当父类作为方法返回值

只能调用父类有的方法
例:

创建父类并添加方法

public class Father {
	public void eat(){
	}
}

创建子类重写父类方法并添加独有方法

public class Son extends Father{
	public void eat(){
		System.out.println("吃饭");
	}
	
	public void play(){
		System.out.println("玩");
	}
}

使用多态调用方法

public class Main {
	public static void main(String[] args) {
		Father father = new Son();
		father.eat();
		//报错
		father.play();
	}
}

编译看左边,运行看右边

  • 7
    点赞
  • 0
    评论
  • 8
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值