大龄屌丝自学笔记--Java零基础到菜鸟--017

代码块,继承,this 和 super,方法的重写

1、代码块:使用 “{}” 括起来的代码,称为代码块。

构造代码块:在类中的成员位置,用 “{}” 括起来的代码。

静态代码块:构造代码块+静态修饰符。

局部代码快:局部位置,用于限定变量的生命周期。

 1 class Test{
 2     static {
 3         System.out.println("静态代码块");
 4     }
 5
 6     {
 7         System.out.println("构造代码块");
 8     }
 9
10     public Test(){
11         System.out.println("局部代码块");
12     }
13 }
14
15 class Fin{
16     public static void main(String[] args){
17         Test t1=new Test();
18         Test t2=new Test();
19     }
20 }
21
22 //依次输出:静态代码块,构造代码块,局部代码块,构造代码块,局部代码块

2、继承

继承概述:extends,在已经存在的类的基础上建立新的子类,新的子类可以使用父类功能的同时,还可以定义新的功能。

继承格式:class 子类名 extends 父类名,如:class Cat extends Animal{} 。

继承优点:提高了代码的复用性、维护性,使类与类之间产生了关系,是多态的前提。

继承缺点:提高了耦合性(代码的原则:高内聚【独自完成某件事的能力】,低耦合【类与类的关系】)。

继承特点:只能单继承,不支持多继承,即一个子类只能有一个父类;可以多层继承。

注意事项:父类的私有成员(private)不能被继承;父类的构造函数不能被继承,但可以通过 super 关键字访问。

子类方法中访问成员变量:(1)在子类局部范围寻找;(2)在子类成员范围寻找;(3)在父类成员范围寻找;(4)若都不存在则报错。

子类方法与构造函数:子类的所有构造函数默认访问父类无参构造函数。

 1 class Animal{
 2     static {
 3         System.out.println("1");
 4     }
 5
 6     {
 7         System.out.println("2");
 8     }
 9
10     public Animal(){
11         System.out.println("3");
12     }
13 }
14
15 class Cat extends Animal{
16     static {
17         System.out.println("4");
18     }
19
20     {
21         System.out.println("5");
22     }
23
24     public Cat(){
25         System.out.println("6");
26     }
27 }
28
29 class Fin{
30     public static void main(String[] args){
31         Cat c=new Cat();
32     }
33 }
34
35 //依次输出:1,4,2,3,5,6

3、this 和 super

this 当前类,如:this.age; , this( 参数 ); 。

super 父类,如:super.age; , super( 参数 ); 。

4、方法的重写

方法的重写:override,子类中与父类一模一样的方法声明,会在子类中覆盖掉父类的方法。

重写与重载(override 与 overload):重写,子类中与父类一模一样的方法声明。

                  重载,本类中出现的方法名一样,参数列表不同的方法(与返回值无关)。

方法重写的应用:子类既需要父类的功能,又需要添加自己的特有功能的时候,重写父类方法。

1 class Cat extends Animal{
2     public void play(string toy){
3         super.play(toy);
4         System.out.println("卖萌");
5     }
6 }

注意事项:父类的私有成员(private)不能被重写;子类重写父类方法时,访问权限不能比父类低。

时间: 2024-10-01 09:37:54

大龄屌丝自学笔记--Java零基础到菜鸟--017的相关文章

大龄屌丝自学笔记--Java零基础到菜鸟--028

泛型,for循环增强应用,静态导入,可变参数,asList() 1.泛型 约束了数据类型,格式为 <数据类型>,如:ArrayList<int> aList=new ArrayList<int>(); 泛型通配符:<?> Object及任意类,<?extends E> E类及其子类,<?super E> E类及其父类. 2.for循环增强应用 1 ArrayList<String> aList=new ArrayList&

大龄屌丝自学笔记--Java零基础到菜鸟--005

关键字,标识符,注释,常量 1.关键字 Java语言具有特定含义的单词,字母全部小写,如:class.public.static.void...... 2.标识符 给接口.类.方法.变量起的名字,如:Fin.main ...... 组成规则:英文字母.数字.$._ ...... 注意事项:不能以数字开头,不能使用关键字,英文字母区分大小写 命名规则:包:小写字母组成,多级包上下级间加 “.” ,如:liverpool(单级包).liverpool.gerrard(多级包) ...... 接口:大

大龄屌丝自学笔记--Java零基础到菜鸟--003

配置环境变量:Path,classpath 1.Path,可以在任意地方执行 “javac.exe” . [计算机]右键[属性]--[高级]选项卡[环境变量]--系统变量[新建],变量名输入 “Java_Home” ,变量值输入JDK安装目录--[确定]. 选择系统变量 “Path” [编辑]--变量值前输入 “%Java_Home%\bin;” --[确定]. 2.classpath,可以在任意地方执行指定目录中的 “.class” 文件. 系统变量[新建],变量名输入 “classpath”

大龄屌丝自学笔记--Java零基础到菜鸟--004

Notepad++下载.安装.设置 1.下载 百度Notepad++,选择百度下载. 2.安装 下载完成后,双击安装文件,下一步傻瓜式安装. 3.设置 启动Nodepad++,[设置]--[首选项]. [首选项]选项卡中,选择[新建],设置 “默认语言” 为 “Java” ,设置 “编码” 为 “ANSI” ,点击[关闭]完成设置,以后可以使用Notepad++编写Java代码.

大龄屌丝自学笔记--Java零基础到菜鸟--001

JDK的下载和安装 1.下载JDK 下载地址:http://www.oracle.com 选择操作系统对应的安装文件. 2.安装JDK 双击启动安装文件,下一步傻瓜式安装,安装路径不要有中文.空格. 安装完成后,win+R,输入“cmd”回车,启动控制台. 直接输入“java”回车,验证是否安装成功. 如图表示安装成功. 3.JDK的卸载 控制面板中卸载.

大龄屌丝自学笔记--Java零基础到菜鸟--002

Hello World 1.进入JDK安装目录下的bin文件夹,新建记事本文件liverpool.txt. 2.在记事本中输入以下代码,并关闭保存. 1 class Fin{ 2 public static void main(String[] args){ 3 System.out.println("Hello World"); 4 } 5 } 3.修改记事本文件后缀名为.java 4.启动控制台,进入该文件夹,输入 “javac liverpool.java” 回车,编译,生成类文

大龄屌丝自学笔记--Java零基础到菜鸟--020

包,权限修饰符,内部类,练习题 1.包 包:package,对类进行分类管理的文件夹. 包的格式:package 包名,多级包用 “.” 隔开,如:package asia.persia . 带包文件的编译:手动创建相应的文件夹:或者编译命令加 “ -d” ,如:javac -d liverpool.java . 访问不同包中的类文件:类文件前加上包的全路径,如:asia.persia.Demo de=new asia.persia.Demo(); . 使用 “import” 关键字导入包. i

大龄屌丝自学笔记--Java零基础到菜鸟--037

类的加载.类加载器.反射 1.类的加载 系统会通过加载.连接.初始化三步来实现类的初始化. 2.类加载器 根类加载器:Bootstrap ClassLoader 扩展类加载器:Extension ClassLoader 系统类加载器:System ClassLoader 3.反射 Class[类]:Constructor[构造方法],Method[成员方法],Field[成员变量].

大龄屌丝自学笔记--Java零基础到菜鸟--026

System类.BigInteger类.Decimal类.Date类.SimpleDateFormat类.Calendar类 1.System类 gc(); exit(); currentTimeMillis(); arraycopy(); 2.BigInteger类 add(); subtract(); multiply(); divide(); divideAndRemainder(); 3.Decimal类 add(); subtract(); multiply(); divide();