首页 > 编程语言 >JavaSE--继承

JavaSE--继承

时间:2023-08-09 10:23:53浏览次数:52  
标签:Account -- 子类 System 继承 JavaSE actno public

一、继承extends

1、继承的作用

  基本作用:子类继承父类,代码可以得到复用

  主要作用:因为有了继承关系,才有了后期的方法覆盖和多态机制

2、继承的语法结构

class 类名 extends 父类名{
    类体;
}
// 使用继承机制来解决代码复用问题。
// 继承也是存在缺点的:耦合度高,父类修改,子类受牵连。
public class ExtendsTest02{
	public static void main(String[] args){
		// 创建普通账户
		Account act = new Account();
		act.setActno("1111111");
		act.setBalance(10000);
		System.out.println(act.getActno() + ",余额" + act.getBalance());

		// 创建信用账户
		CreditAccount ca = new CreditAccount();
        // 这两个方法子类从父类继承过来的
		ca.setActno("2222222");
		ca.setBalance(-10000);
		ca.setCredit(0.99);
		System.out.println(ca.getActno() + ",余额" + ca.getBalance() + ",信誉度" + ca.getCredit());
	}
}

// 银行账户类
// 账户的属性:账号、余额
class Account{ // 父类
	// 属性
	private String actno;// 私有的也是可以继承的,只是子类中无法直接访问
	private double balance;

	// 构造方法
	public Account(){
	
	}
    // 除了构造方法 其他的都会继承
	public Account(String actno, double balance){
		this.actno = actno;
		this.balance = balance;
	}

	// setter and getter
	public void setActno(String actno){
		this.actno = actno;
	}
	public String getActno(){
		return actno;
	}
	public void setBalance(double balance){
		this.balance = balance;
	}
	public double getBalance(){
		return balance;
	}
}

// 其它类型的账户:信用卡账户
// 账号、余额、信誉度
class CreditAccount extends Account{ //子类

	// 属性
	private double credit;

	// 构造方法
	public CreditAccount(){
	
	}

	public void doSome(){
		//错误: actno 在 Account 中是 private 访问控制
		//System.out.println(actno);
		// 间接访问
		//System.out.println(this.getActno());
		System.out.println(getActno());
	}

	// setter and getter方法
	public void setCredit(double credit){
		this.credit = credit;
	}
	public double getCredit(){
		return credit;
	}
	
}

3、继承的相关特性

  1)B类继承A类,则称A类为超类(superclass)、父类、基类,B类则称为子类(subclass)、派生类、扩展类。   2)java 中的继承只支持单继承,不支持多继承,C++中支持多继承,这也是 java 体现简单性的一点,换句话说,java 中不允许这样写代码:class B extends A,C{ } 这是错误的。   3)虽然 java 中不支持多继承,但有的时候会产生间接继承的效果 例如:class C extends B,class B extends A,也就是说,C 直接继承 B,其实 C 还间接继承 A。   4)java 中规定,子类继承父类,除构造方法不能继承之外,剩下都可以继承。但是私有的属性无法在子类中直接访问。 (父类中private修饰的不能在子类中直接访问。可以通过间接的手段来访问。)   5)java 中的类没有显示的继承任何类,则默认继承 Object类,Object类是 java 语言提供的根类(老祖宗类),也就是说,一个对象与生俱来就有 Object类型中所有的特征。   6)继承也存在一些缺点,例如:CreditAccount 类继承 Account 类会导致它们之间的耦合度非常高,Account 类发生改变之后会马上影响到 CreditAccount 类

4、什么时候使用继承

  凡是采用“is a”能描述的都可以继承   例如:Cat is a Animal猫是一个动物      Dog is a Animal狗是一个动物      CreditAccount is Account......  

二、Object类

1、Object类提供了哪些方法

  1)Java内置了一套庞大的类库,我们可以基于类库进行二次开发,也就是jdk内置的类库实现了很多基础的功能,例如:String是sun编写的字符串类、System是sun编写的系统类   2)jdk源代码位置:jdk文件目录下lib下的src文件夹   3)当源码中的一个方法以“;”结尾,并且修饰符列表中有“native”关键字,表示底层调用c++写的dll程序(dll动态链接库文件)
// Object类中的一个方法
private static native void registerNatives();
   5)equals方法
public boolean equals(Object obj){
    return (this == obj);
}
  4)toString方法
public String toString(){
    return getClass().getName() + "@" + Integer.toHexString(jashCode());
}
// 如果使用System.out.println()这个方法输出一个引用的话
System.out.println(引用类型);
// 底层会自动调用toString方法,输出toString方法的结果

 

标签:Account,--,子类,System,继承,JavaSE,actno,public
From: https://www.cnblogs.com/hyy-0/p/17609631.html

相关文章

  • win11首次开机不联网创建本地账户
    一、开机后进入到欢迎界面按Shift+F10,打开CMD.exe,如果是笔记本可能需要按Fn+Shift+F10二、输入命令oobe\bypassnro.cmd然后系统会自动重启,重启之后注册界面就会显示离线建立账户的入口......
  • 使用MyEclipse如何部署Descriptor (XML)编辑器?
    Descriptor(XML)Editor编辑器包含了高级的XML编辑功能,在本文中您将了解到这些编辑功能、WebXML编辑等,此功能包含在MyEclipse中可用。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:742336981欢迎一起进群讨论1.WebXML编辑器MyEclipse WebXML编辑器包括高级XML编......
  • python:升级setuptools的版本(Python 3.11.4)
    一,查看当前setuptools的版本:[[email protected]]#python3-mpipshowsetuptoolsName:setuptoolsVersion:65.5.0Summary:Easilydownload,build,install,upgrade,anduninstallPythonpackagesHome-page:https://github.com/pypa/setuptoolsAuthor:Py......
  • 【杂项】电脑出现黑屏而声音仍然存在办法解决
     右键此电脑选择管理选择设备管理器 将显示适配器Intel禁用 完成。 ......
  • Git常见命令和问题
    ------------恢复内容开始------------1.gitclone远程指定分支:gitclone-b<指定分支名><远程仓库地址> 2. pip3install-rrequirements.txt3.git如何讲主分支(master)合并熬子分支上:1、先切换到主分支master:gitcheckoutmaster2. 把主分支代码拉到本地......
  • esp32 mqtt 局域网 通信 测试通过
    #include<WiFi.h>#include<stdlib.h>#include"WiFiClientSecure.h"#include"Adafruit_MQTT.h"#include"Adafruit_MQTT_Client.h"#include<ArduinoJson.h>#defineWLAN_SSID"xxx"#defineWLAN_PA......
  • 【2023-08-08】顺势而为
    20:00下马柳阴下,独上堤上行。故人千万里,新蝉三两声。城中曲江水,江上江凌城。两地新秋思,应同此日情。                                                 ——白居易·《立......
  • select的错误用法
     执行 manselect 会有如下提示 说明调用select函数时传入的timeval的值会变,所以在重复调用select的场景下,每次调用select,timeval的值都需要重新设置,如下是一个错误的示例,需要将设置时间值的代码移到while(1)里面 ......
  • CTFSHOW-SSTI
    CTFSHOW-SSTIweb361?name={{().__class__.__base__.__subclasses__()[132].__init__.__globals__['popen']('cat/flag').read()}}web362?name={{x.__init__.__globals__['__builtins__'].eval('__import__("os").popen(&......
  • 利用pytorch自定义CNN网络(一):torchvision工具箱
    本文是利用pytorch自定义CNN网络系列的第一篇,主要介绍torchvision工具箱及其使用,关于本系列的全文见这里。笔者的运行设备与软件:CPU(AMDRyzen™54600U)+pytorch(1.13,CPU版)+jupyter;本文所用到的资源:链接:https://pan.baidu.com/s/1WgW3IK40Xf_Zci7D_BVLRg提取码:1212......