Java Day 09

子父类的构造函数
 在子类的构造函数中,第一行有一个默认的隐式语句:super()
 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。

为什么子类实例化的时候要访问父类中的构造函数呢?

子类实例化细节
 构造器 显示初始化什么时候完成
 默认初始化 父类构造器 显示初始化
 Person p = new Person();
 1、JVM读取.class文件,并加载进内存
 2、堆内存开辟空间,
 3、对对象属性进行默认初始化
 4、调用构造函数进行初始化
 5、在构造函数中,调用父类构造函数并初始化
 6、对子类的属性进行显示初始化
 7、对子类构造函数的特定初始化
 8、初始化完毕,将值赋给引用变量
 
final关键字
 类 方法 变量
 修饰的类   不可以被继承
 修饰的方法 不可以被覆盖
 修饰的变量 只能赋值一次 变量名全部大写

抽象类
 abstract 方法以“;”结尾

特点
 1、方法只有声明,没有实现,需要使用abstract修饰,同时类也要被abstract 修饰
 2、抽象类不可以被实例化。
 3、继承的子类必须覆盖所有父类的抽象方法,才能被实例化。否者

细节
 1、抽象类有构造函数吗 有,用于给子类对象进行初始化
 2、抽象类可以不定义抽象方法吗 可以 目的是不让该类不创建对象。例:AWT的适配器对象就是这种类
 3、抽象关键字不可以和哪些关键字共存 private、static、final
 4、抽象类和一般类的异同点 都是用来描述事物;
    不同:描述事物的信息全和不全;有没有抽象方法;可不可以被实例化
 5、抽象类一定是一个父类么?
    是 需要子类覆盖其抽象方法

接口
 它里面的方法全是抽象方法,关键是interface;
 1、常见的成员 全局常量、抽象方法,都有固定的修饰符,不写自动添加
    public static final
    public abstract
 接口的成员都是公共的权限

实现 implements
 接口不能实例化

多实现

细节
 避免了单继承的局限性
 接口之间可以多继承,方法体是否重载

特点
 多实现、降低耦合、功能扩展
 
接口与抽象类的区别
 相同点:都是抽取的概念
 不同点:
 1、抽象是继承关系,单继承
    接口是实现关系,多实现
 2、抽象类是is a 关系
    接口是 like a 关系
 3、抽象类中可以定义非抽象方法
    接口的方法全是抽象方法,且有固定的修饰符

时间: 2025-01-07 04:50:44

Java Day 09的相关文章

java进阶09 GUI图形界面 布局管理器之BorderLayout

前面虽然实现了窗口,但是一般的应用有很多其他东西,如按钮,输入框之类的. 而这些都是建立在一个东西上面的,那就是布局管理器. 常用的布局管理器有3个 BorderLayout:边界布局管理器 FlowLayout:流式布局管理器 GridLayout:网格布局管理器 今天先说说BorderLayout 我们先修改下UI类,这次是最后一次修改,这次会将UI类与管理器和控件彻底分开,再也不用操作UI类 package Frame; import javax.swing.JFrame; public

JAVA获得0-9,a-z,A-Z范围的随机数

/*** JAVA获得0-9,a-z,A-Z范围的随机数* @param length 随机数长度* @return String*/public static String getRandomChar(int length) {char[] chr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o

Java基础09 类数据与类方法(转载)

我们一直是为了产生对象而定义类(class)的.对象是具有功能的实体,而类是对象的类型分类.这是面向对象的一个基本概念. static数据成员 有一些数据用于表述类的状态.比如Human类,我们可以用“人口”来表示Human类的对象的总数.“人口”直接描述类的状态,而不是某个对象. 类的所有对象共享“人口”数据.这样的数据被称为类数据成员(class field). 在类定义中,我们利用static关键字,来声明类数据成员,比如: class Human{    public Human(int

java 第09节 赋值与初始化

2016-06-28 1 赋值 赋值:是给变量指定一个值或者是改变一个变量的值. int speed=30; variable=expression;//变量类型 变量名=表达式 package day09; public class Test { public static void main(String[] args) { //声明变量 int speed,salary; float time,basicSalary,prize,distance; char alphabet; //给变量

GUI编程笔记(java)09:GUI控制文本框只能输入数字字符案例

1.首先我们看看我的需求,如下: 控制文本框只能输入数字字符 2.源代码: package cn.itcast_07; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextField; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.W

java基础09之类变量初始化时机

讨论了实例变量的初始化时机,现在来讲讲类变量的初始化时机. 实例变量属于Java类本身,只有当程序初始化该Java类时才会为该类的类变量分配内存空间,并执行初始化. 从程序运行的角度来看,每JVM对一个Java类只初始化一次,因此Java程序每运行一次,系统只为类变量分配一次内存空间,执行一次初始化.填写图片摘要(选填) ?注释掉的代码如果执行的话运行程序为3000 如果把代码放在初始工资下面的话程序运行为5000? Salary.Demo先被类加载,在main方法通过实例化对象调用curren

Java面试09|多线程

15个顶级Java多线程面试题及回答 http://ifeve.com/15-java-faq/ 1.关于线程的状态及相互转换 (1)join()方法:能够使线程顺序执行.可以将一个任务分为多个子任务,调用join()方法等待这些子任务完成运算,然后汇总结果.需要注意这并不能保证各个子任务线程的结束顺序. (2)线程只能从就绪状态(runnable)这一条唯一路径到运行状态(running) (3)Thread类,定义了一些列的线程操作函数.例如,sleep()休眠, interrupt()中断

JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑

1.乌龟和兔子共有属性和方法 做成父类 避免重复代码 package com.lovo; /** * 类: 动物 * @author Abe * 属性: 名字 步距 总距离 睡觉的日子 */ public class Animal { protected String name; protected int step; protected int distance; protected int sleepDay; /** * 构造器 * @param name */ public Animal(

Java笔记(09):面向对象--接口

1.接口的成员特点: 1 /* 2 接口的特点: 3 A:接口用关键字interface表示 4 interface 接口名 {} 5 B:类实现接口用implements表示 6 class 类名 implements 接口名 {} 7 C:接口不能实例化 8 那么,接口如何实例化呢? 9 按照多态的方式来实例化. 10 D:接口的子类 11 a:可以是抽象类.但是意义不大. 12 b:可以是具体类.要重写接口中的所有抽象方法.(推荐方案) 13 14 由此可见: 15 A:具体类多态(几乎没