首页 > 编程语言 >2022.10.7 Java第五次课总结

2022.10.7 Java第五次课总结

时间:2022-10-10 17:11:11浏览次数:55  
标签:Java parent 继承 子类 printValue 第五次 父类 2022.10 public

继承

java的继承与C++的继承的区分

java中的继承是单项继承,区分与C++的多项继承,这种继承避免了C++继承中可能出现的冲突的问题,单项继承父类所有的属性,子类对于好的属性可以进行使用,对于无用或者有危害的属性可以进行屏蔽隐藏,对于子类,可以产生自己的属性

class 子类名 extends 父类名

{   

      ........    

}

理论上 所有的类都隐含着继承关系,继承来自object,隐含的构造方法调用object(老祖宗)

parent class 父类

super 超类

base 基类(包含父类 父类的父类 父类的父类的父类的.......等等)

子类自动拥有父类声明为public和protected的成员,但是private不能继承,即私有的成员变量不能继承

类前加 final 或者 private 可以防范被继承,是一种安全手段

总结一


public class ParentChildTest {
public static void main(String[] args) {
Parent parent=new Parent();
parent.printValue();
Child child=new Child();
child.printValue();

parent=child;
parent.printValue();

parent.myValue++;
parent.printValue();

((Child)parent).myValue++;
parent.printValue();

}
}

class Parent{
public int myValue=100;
public void printValue() {
System.out.println("Parent.printValue(),myValue="+myValue);
}
}
class Child extends Parent{
public int myValue=200;
public void printValue() {
System.out.println("Child.printValue(),myValue="+myValue);
}
}
在这串代码中 如果孩子类调用父母和爷爷类的构造方法,顺序如何?
如果父类中存在变量,子类调用父类的构造方法对继承来自父类的变量进行初始化,那父类的构造方法要写在子类构造语句的第一句
public children()
{
Parent();
System.out.print("A");
}
原因是 初始化的时候类就出现了,父类与子类有继承关系
或者 也可以把 Parent();写为 Super();

不可变类的作用
可以方便和安全的运用于多线程环境中
访问他们可以不用加锁,因而能提供更高的性能
实例如下


public final class Address
{
private final String detail;
private final String postCode;

//在构造方法里初始化两个实例属性
public Address()
{
this.detail = "";
this.postCode = "";

}
public Address(String detail , String postCode)
{
this.detail = detail;
this.postCode = postCode;
}
//仅为两个实例属性提供getter方法
public String getDetail()
{
return this.detail;
}

public String getPostCode()
{
return this.postCode;
}
//重写equals方法,判断两个对象是否相等。
public boolean equals(Object obj)
{
if (obj instanceof Address)
{
Address ad = (Address)obj;
if (this.getDetail().equals(ad.getDetail()) && this.getPostCode().equals(ad.getPostCode()))
{
return true;
}
}
return false;
}
public int hashCode()
{
return detail.hashCode() + postCode.hashCode();
}
}

父类与子类的关联关系

扩充 子类定义的方法与父类没有同名

单向继承 父类不能调用子类特有的方法

避免循环调用

覆盖/重写 子类父类定义了完全一样的方法

覆盖方法的访问范围不能小于原来的方法

覆盖方法抛出的异常不能比原方法多

声明为final的方法不允许覆盖

例如 Object的getClass()方法不能覆盖

不能覆盖静态方法

重载 子类有父类的同名方法,但两者的参数类型或参数数目不一样




多态

简单来说 相同的一条语句在不同的运行环境中可以产生不同的运行结果

例如 对于动物园的管理系统

如果要给不同类型的动物进行喂食 由于动物的种类不同 调用后喂食的东西(即产生的结果)不同

子类对象可以被当成基类对象使用

但是不能交叉继承

 

 

 

 

接口与抽象类

接口的标准(插排)

自定义(非标准)

举例来说 苹果的充电线

标签:Java,parent,继承,子类,printValue,第五次,父类,2022.10,public
From: https://www.cnblogs.com/Arkiya/p/16759671.html

相关文章

  • Java Scanner中一起使用next()和nextLine()方法会出现什么情况?
     Java中,我们可以通过Scanner类来获取用户的输入。先来看看next()方法的使用:  packageWorkStudy;importsun.rmi.runtime.Log;importjava.util.Scanner;publicclass......
  • Java运算符
    Java运算符逻辑运算符与&&,或||,非!逻辑与运算:两个结果都为真,结果才为true,如果前面代码判断为错,后面则不执行。逻辑或运算:两个变量有一个为真,则结果才为true。逻辑......
  • Java 多线程(四)Lambda表达式
    Lamda表达式λ希腊字母表中排序第十一位的字母,英语名为Lambda避免匿名内部类定义过的多其实质属于函数式编程的概念理解函数式接口是学习Java8Lambda表达式的关键所......
  • Java 我的第一个hello word
         项目—右键—选中添加框架的支持 选中“WebApplication”,然后确定  右键src,新建一个类          ......
  • 使用 idea2021(汉化版)创建一个java程序
            建好以后是这样的 在左边的项目栏建好的项目下右键【src】,选择【新建】,选择【Java类】  输入文件名HelloWorld按回车。即可创建完成......
  • 005Java开发环境搭建
    005Java开发环境搭建1、JDK下载与安装(1)卸载首先我们先来学习一下如何卸载JDK。删除Java的安装目录(jdk整个包)。删除环境变量里的“JAVA_HOME”。删除Path下关于Java......
  • 2022.10.10 POI
    POI与easyExcel应用场景将用户信息导出为excel表格将Excel表中的信息录入到网站数据库,大大减小网站数据的录入量!开发中经常会涉及到excel的处理,如导出Excel到......
  • Java技术选择题1
                            ......
  • JavaScript高级程序设计笔记04 变量、作用域与内存
    变量、作用域与内存变量特定时间点一个特定值的名称。分类原始值:按值访问复制:两个独立使用、互不干扰引用值(由多个值构成的对象):按引用访问操作对象时,实际上......
  • Java HashMap getOrDefault() 方法
    参考链接:https://www.runoob.com/java/java-hashmap-getordefault.htmlhttps://blog.csdn.net/weixin_43263961/article/details/86513880......