Java学习第9-10天

Java学习第9天
继承:extends
格式:
class Zi extends Fu{…}

特点:
	1)在Java语言中,只支持单继承,不支持多继承
	2)但是,多层继承(分层初始化)
			初始化的过程:
				成员变量的初始化
				显示初始化
				构造方法初始化
				
继承中的第`一`个注意事项:
	A)子类继承父类,只能继承父类非私有的成员(成员变量,成员方法)
		class Fu{
		
			private int num = 100 ;
		}
		
		class Zi extends Fu{
			public void show(){
				System.out.println(num) ;
			}
		}
	B)子类继承父类,不能继承父类的构造方法,但是可以通过super关键字来访问
	继承中第二个注意事项:
	子类的构造方法(有参/无参)都要默认的访问父类的无参构造方法;
	如果父类中没有提供无参构造方法,会出现什么现象?
	编译不通过,父类中没有无参(父类提供有参,系统给父类不会提供无参)
	如何解决呢?(面试过程中,前两个即可!)
		1)给出父类的无参构造方法...
		2)在子类的构造方法中通过super(...)间接的访问父类的有参构造方法...
		3)在子类中的有参构造方法中,可以通过this()访问当前子类中的无参构造方法,在通过无参构造方法间接访问父类的有参构造方法.
		继承的特点:
1)在Java语言中,只支持单继承,不支持多继承
2)但是,多层继承(分层初始化)
		初始化的过程:
			成员变量的初始化
			显示初始化
			构造方法初始化

继承关系中
类的组成
成员变量 :如果子类和父类中的成员变量名称一致
构造方法 :子类不能继承父类的构造方法,但是可以通过super默认访问父类的无参
成员方法

		1)子类中的成员方法名和父类中的方法名不一致,分别调用...
		2)子类中的成员方法名和父类中的成员方法名一致的情况:
			a)在子类中查找,如果存在,就调用
			b)如果不存在,在父类中找
			c)如果父类都不存在,报错
					方法重写
		3)静态成员方法     算不算方法重写?  静态的成员方法,本质算不上方法重写(因为它和类有关,比对象优先加载进内存)
			子类如果要重写父类中的静态方法,该方法必须也是静态的
			在继承关系中,有时候父类中的功能方法不想让子类进行覆盖或者重写,必须提供一个关键字:
	final:最终的,终态的,无法更改的!

final关键字
final的应用:
可以修饰类,无法被继承!
可以修饰变量,此时这个变量是常量,被final修饰的变量,只能赋值一次!
可以修饰成员方法,此时该方法不能被重写!
final使用中的注意事项
1)final可以修饰基本数据类型的变量,当前该变量的值不能被改变!
2)final可以修饰引用数据类型,当前该类对象的地址值不能被改变!
final修饰变量的初始化时机:
1)变量只能被初始化一次
2)当前变量只是定义了,在构造方法执行之前必须初始化
代码块:
在Java中使用{} 将代码包裹起来
局部代码块:是在局部位置(方法中定义),作用,限定变量的生命周期
构造代码块:在类中的成员位置,作用:以后将构造方法中相同的代码使用{} 提取出来—>构造代码块
每次执行构造方法之前,都会优先构造代码块
静态代码块:在类中的成员位置 ,作用:给类中进行初始化! 只执行一次!
在{}前面使用static关键字修饰
static{
…代码
}
面试题:
静态代码块,构造代码块,构造方法的执行顺序?
静态代码块 > 构造代码块 >构造方法
多态
多态:
在同一时刻体现出事物的不同状态!
动物(猫,狗,猪…)
水(气态,固态,液态…)
Animal a = new Cat() ; //内存中是猫
Animal a = new Dog ();//内存是狗
在面向对象Java语言中,多态的前提条件:
1)必须有继承关系
如果没有继承关系,无意义
2)必须有方法重写
在继承关系中,父类比较抽象(动物类),
动物类
eat(){…}
子类:
狗类,
eat(“狗吃骨头”){}
猫类
eat(“猫吃鱼”){}
3)必须父类引用指向子类对象(向上转型) ;
格式:
父类名 对象名 = new 子类名() ;

使用代码进行实现

在多态中的成员访问特点:
成员变量:
编译看左边,运行看左边
构造方法:在多态中,父类对象的创建时通过new 子类名(),优先让父类进行数据初始化
成员方法(非静态):
编译看左边,运行看右边

	静态的成员方法:(静态成员方法算不上方法重写,因为静态跟类有关系)
		编译看左边,运行看左边
		
	我们以后说的成员方法,都是指的是非静态(如果子类出现和父类一模一样的方法声明,那么存在方法重写)
		在多态中成员方法	编译看左,运行看右
多态的好处:
	1)提高了程序的维护性(由继承关系保证)
	2)提高了代码的扩展性(由多态的保证)
多态中的弊端:
	多态中无法直接访问子类的特有功能
多态中的成员访问特点:
孔子装爹案例

class 孔子爹 {
public int age = 40 ;

public void teach(){
	System.out.println("讲JavaSE...") ;
}

}
//孔子要装爹,带爹的眼镜,粘上胡子…

class 孔子 extends 孔子爹{

public int age = 20 ;
public void teach(){
	System.out.println("讲论语...") ;
}

public void playGame(){
	System.out.println("会玩王者农药...") ;
}

}

class DuoTaiTest{
public static void main(String[] args){
//父类引用指向子类对象(向上转型)
孔子爹 k = new 孔子() ;
System.out.println(k.age) ; 40// //编译看左,运行看左
k.teach() ;//将论语 //编译看左,运行看右

	k.playGame() ;//   //编译看左,运行看右 (编译报错)
}

}

多态中的弊端:
多态中无法直接访问子类的特有功能
如何解决?
多态的第三个前提条件:
父类引用指向子类对象 Fu fu = new Zi() ; 向上转型
在多态中,如果能够去使用子类本身的引用,就能够访问子类的特有功能?
1)子类new子类对象
Zi zi = new Zi() ;
zi.playGame() ;
虽然可以,但是从内存角度考虑,比较消耗内存空间
2)将父类引用强制转换为子类对象 (向下转型)
Zi zi = (Zi)fu;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值