Java学习之路 第五章 面向对象(3)

本文深入探讨面向对象编程(OOP)的三大核心概念:封装、继承和多态。详细解析了封装如何通过隐藏细节和使用get/set方法保护数据,继承如何实现代码复用和提高维护性,以及多态如何增强程序的扩展性和可维护性。

面向对象编程:封装、继承和多态

《一》封装:

  • 封装是什么:就是隐藏实现细节,将属性私有化。
  • 为什么要用封装:为了不让外界随意修改或访问该类的属性,对属性进行私有化(private),从而隐藏细节。
  • 封装的实现方式:私有的属性+公共的方法get/set方法。
  • 封装的好处;增加了数据访问的限制,加强了程序的维护性和灵活性。
    构造方法:
    1.构造方法的规则:
public 类名(【参数】){
		给属性赋值;
}

2.构造方法的意义:
构造方法用于创建对象的;使用new关键字来进行调用
作用:初始化工作。
3.默认的构造方法:任何一给类都有一给默认的无参构造方法。
《二》方法的重载
概念:在一个类中,如果多个方法满足“名同参不同”的关****系,则称为方法的重载。**
《三》继承extends:
1.继承的概念:
子类具有父类的一般特性(属性+方法),以及自身的特殊的特性。
****2.继承的实现:使用extends关键字

class 子类名 extends 父类名 {

}

3.Java继承的特点:
(1)Java只支持单继承。
(2)构造方法不参与继承。
(3)父类私有的东西不继承。
(4)Object类是所有类的顶层父类,所有类都直接或者间接继承他。
4.super关键字:
(1)可以理解为父类的一给引用。
(2)访问父类的成员变量:super.成员变量名。
(3)访问父类的成员方法:super.成员方法名。
(4)访问父类的构造方法:super()。
(5)所有类的构造方法的第一行式super()。
5.继承的优缺点:
继承的好处
a:提高了代码的复用性
b:提高了代码的维护性
c:让类与类之间产生了关系,是多态的前提
继承的弊端
类的耦合性增强了。
开发的原则:高内聚,低耦合。
耦合:类与类的关系
内聚:就是自己完成某件事情的能力
《四》 方法的重写
(1)概念:在子类方法中方法的名称,参数,返回值类型都和父类一样,但实现不同。
(2)注意事项:
a.方法的重写中,访问修饰可以被放大但不能被缩小。
public>protected>默认>private
b.被final修饰的方法子类不能重写。
《五》多态
1、多态的概念:
多态既多种形态,指的是同一个接口(父类),使用不同的实例(子类)而执行不同的操作。
2、为什么需要多态?扩展性
使用多态之后,当需要增加新的子类类型时,无需更改父类,程序的可扩展性及可维护性增强
3、多态的表现形式
第一种:
父类 对象=new 子类();
对象.方法(); ----------->会调用子类重写的方法
第二种:
定义方法(父类)-------->调用方法(子类);
方法中就会调用子类重写的方法
《六》 封装,继承,多态的练习
1、继承练习:计算图形的周长和面积

//父类图形
public class Shape {
	public double getPerimeter() {
		return 0;
	}
	public double getArea() {
		return 0;
	}
}
//子类矩形
public class Squre extends Shape {
	private double width;
	private double height;
	public Squre(double width, double height) {
		this.width = width;
		this.height = height;
	}
	public double getPerimeter() {
		return (width + height) * 2;
	}
	public double getArea() {
		return width * height;
	}
}
//子类圆
public class Circle extends Shape {
	private double r;
	public Circle( double r) {
		this.r=r;
	}
	public double getPerimeter() {
		double zhouchang;
		zhouchang=2*3.14*r*r;
		return zhouchang;
	}
	public double getArea() {
		double mianji;
		mianji=2*3.14*r;
		return mianji;
	}
}
//测试类
public class Test {
	public static void main(String[] args) {
		Squre s=new Squre(3,4);
		System.out.println("周长是:"+s.getPerimeter()+"\n"+"面积是:"+s.getArea());
		Circle c=new Circle(3.2);
		System.out.println("圆周长是:"+c.getPerimeter()+"\n"+"面积是:"+c.getArea());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值