栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

day1-3-2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号