day1-3-2

一、面向对象基础

面向对象的三大基本特征是:封装、继承、多态

  • 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据
    • 隐藏功能或者信息的细节,使用者只关注功能的使用,而不需要关心实现细节
  • 继承是为了重用父类代码,同时为实现多态性作准备
    • 关键字extends,子类可以集成父类的成员变量和成员方法
    • java采用的是单根集成体系
  • 多态性是发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类 对象引用变量来实现动态方法调用。
    • 一个事物可以有多种表现形式
    • 体现形式常见的有3种
      • 父类型引用子类对象
      • 方法重写
      • 方法重载

面向对象三大特征的优缺点

  • 设计目标:高内聚低耦合
  • 可维护性提高
  • 重用性提高
  • 扩展性增强
  • 执行效率
类:用户自定义的数据类型
  • 成员属性----具体存放的数据
  • 成员方法----提供的操作

关键字:class

class Student{
    long stuNo;
    String name;
    double score;
    
    void ChiFan(){}
    void xuexi(){}
}

对象:变量

  • 研究目标
  • 变量
Student s1 = new Student();
// 可以访问成员属性,能不能访问取决于范围限定词
s1.stuNo = 999;
s1.name = "张三"
    
// 调用方法,能不能访问取决于范围限定词
s1.ChiFan();
s1.xuexi();
封装

在面向对象程式设计方法中,封装Encapsulation是指一种将抽象性函式接口的实现细节部分包装、隐藏 起来的方法。

  • 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问
  • 要访问该类的代码和数据,必须通过严格的接口控制。
  • 封装最主要的功能在于能修改自己的实现代码,而不用修改那些调用代码的程序片段
  • 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

封装有三大好处

  • 良好的封装能够减少耦合
  • 类内部的结构可以自由修改
  • 可以对成员进行更精确的控制
  • 隐藏信息,实现细节

4个关键字

  • private类内可见
  • 默认同包可见
  • protected同包或者子类可见
  • public到处可见
练习
  • 声明员工类Employee,包含属性:编号、姓名、年龄、薪资, 声明Test01测试类,并在main方法中,创建2个员工对象,并为属性赋值,并打印两个员工的信息。
// 编号,姓名,年龄,薪资
private int bianHao;
private String xingMing;
private int nianLing;
private double xinZi;

public void show() {
	System.out.println("员工" + bianHao + "的编号:" + bianHao + ",姓名:" + xingMing + ",年龄:" + nianLing + ",薪资:" + xinZi);
}

public int getBiaoHao() {
	return bianHao;
}

public void setBiaoHao(int biaoHao) {
	this.bianHao = biaoHao;
}

public String getXingMing() {
	return xingMing;
}

public void setXingMing(String xingMing) {
	this.xingMing = xingMing;
}

public int getNianLing() {
	return nianLing;
}

public void setNianLing(int nianLing) {
	this.nianLing = nianLing;
}

public double getXinZi() {
	return xinZi;
}

public void setXinZi(double xinZi) {
	this.xinZi = xinZi;
}

public static void main(String[] args) {
	Employee e1 = new Employee();
	e1.setBiaoHao(1);
	e1.setXingMing("张三");
	e1.setNianLing(23);
	e1.setXinZi(10000.);
	e1.show();

	Employee e2 = new Employee();
	e2.setBiaoHao(2);
	e2.setXingMing("李四");
	e2.setNianLing(22);
	e2.setXinZi(11000.);
	e2.show();
}
  • 判断三角形
private int a, b, c;
public static void main(String[] args) {
	Triangle t = new Triangle();
	t.setA(2);
	t.setB(3);
	t.setC(4);
	System.out.println(t.isTriangle() ? "是三角形" : "不是三角形");
	System.out.println(t.isRightTriangle() ? "是直角三角形" : "不是直角三角形");
	System.out.println(t.isEquilateralTriangle() ? "是等边三角形" : "不是等边三角形");
	System.out.println(t.isIsoscelseTriangle() ? "是等腰三角形" : "不是等腰三角形");
	System.out.println("海伦数" + t.getArea());
	System.out.println("周长是" + t.getLength());
}

public boolean isTriangle() {
	if (a + b > c && a + c > b && b + c > a) {
		return true;
	} else
		return false;
}

public boolean isRightTriangle() {
	if (isTriangle())
		if (a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b)
			return true;
		else
			return false;
	return false;
}

public boolean isEquilateralTriangle() {
	if (isTriangle())
		if (a == b && b == c)
			return true;
		else
			return false;
	return false;
}

public boolean isIsoscelseTriangle() {
	if (isTriangle())
		if (a == b || b == c || a == c)
			return true;
		else
			return false;
	return false;
}

double getArea() {
	double p = (a + b + c) / 2.;
	return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}

double getLength() {
	return a + b + c;
}

// ------------------------------------------------
public int getA() {
	return a;
}

public void setA(int a) {
	this.a = a;
}

public int getB() {
	return b;
}

public void setB(int b) {
	this.b = b;
}

public int getC() {
	return c;
}

public void setC(int c) {
	this.c = c;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值