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

目录

1.封装

2.继承

2.1概述与应用

2.2不可继承性

2.3权限测试

2.4继承-重写(重点,难点)

2.5super与this的使用

3.多态

3.1多态核心

3.2多态直接引用

3.3多态以传参方式出现

3.4多态以返回值形式出现

4.例题


1.封装

//面向对象案例:车子的发动
//分析:   类: 车类       对象: new   属性:颜色,品牌等     方法:启动
//问题: 价格可以赋值为负数--程序逻辑没问题,但数据不合理
//解决方案:在程序中对属性的值进行判断是否大于0,如果小于0,则给定一个默认值即可
//封装性:不要使用属性直接赋值与取值,而是通过方法进行封装;该方法就是set/get方法
//好处:提高安全性及复用性
//封装性操作步骤:
//1.编写set/get方法
//2.属性私有化

class Car{
	private String brand;  //写上set和get   private:私有权限,限制属性只能在当前类中使用
	private  int    price;
	
	/*public void start() {
		System.out.println(brand+"品牌的汽车正在发动;价格为:"+price);
	}*/
	
	//set规范写法:set+属性名首字母大写,参数名与属性名一致
	public void setPrice(int price) {
		//注意:此处是为了说明封装特性,才进行的逻辑判断;后续没有特殊说明,则直接赋值
		if(price<0) {
			this.price = 100000;  //给定异常数据的默认值
		}else {
			this.price = price;
		}
	}
	
	//get规范写法: get+属性名首字母大写
	public int getPrice() {
		return price;  //可以+this吗? 可以,只是get方法中没有冲突则可省略
	}
	
	public void setBrand(String brand) {
		this.brand = brand;
	}
	
	public String getBrand() {
		return brand;
	}
	
}

public class Test {
	public static void main(String[] args) {
		Car car = new Car();
		car.setBrand("路虎");
		car.setPrice(-1000);

		
		System.out.println("---------");
		
		//car.price = -10000;  //加权限限制--从源头上规避异常数据的录入
		car.setPrice(-10000);
		
		System.out.println(car.getPrice()+"==>"+car.getBrand());  //取值
	}
}

2.继承

2.1概述与应用

生活中的继承:施舍方的赠与,接受方的获取
程序中的继承:两个类之间满足“is a”的关系,这样的两个类,我们可以设置为继承
特点:有了继承关系,子类拥有父类的属性和方法

父类的选择:
在生活中满足is a关系的类很多,我们需要从中选择最合适的父类
例如: 狗类是动物类,也是生物类,也是物质类
       直接父类选择动物类---特征和行为最接近
结论: 重合点越多,越接近直接父类
       重合点越少,越接近Object类(祖宗类)

//继承的应用:
//案例: 子类有狗类,鸟类,找出他们的特征和行为
//狗类:  
//特征: [品种,姓名,年龄],毛色
//行为: [吃,睡],跑
//鱼类: [品种,姓名,年龄]
//特征: [吃,睡],游

//父类:动物类--共性抽取,将所有子类共有的特征和行为放入父类,子类只需继承即可
//特征: 品种,姓名,年龄
//行为: 吃,睡

//作用:简化代码量,提高复用性

============================继承的共性抽取==========================

public class Animal {
	String brand;
	String name;
	int    age;
	
	public void eat() {
		System.out.println(name+"正在吃");
	}
	
	public void sleep() {
		System.out.println(name+"正在睡");
	}
}

//Dog类继承Animal类
class Dog extends Animal{
	String color;
	
	public void run() {
		System.out.println(name+"正在跑..");
	}
}

//Fish类继承Animal类
class Fish extends Animal{
	public void
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值