DAY03 构造函数及调用、继承行为,接口

学习的第三天,会慢慢萌芽一些想法,思维,听着“似曾相识”的课,慢慢培养一种感觉,反应迟钝的人就要做好笔记,记住每一句话,回去反复斟酌,反复操练,聪明的人只是比普通人多练了哪怕一次,记住每一次练习的感受,记录下来,抓住灵感,下次更得心应手。

今天的内容在基础上深入了一下这门语言。

1.public class Teacher {}

解:编程里面很多东西都是有默认值的,不显示不代表不存在。这行代码里Teacher类里面有一个默认的构造函数。

2.硬盘、内存(程序运行时需要用到)、闪存

解:内存:

        Teacher tea=new Teacher();
        tea.name = “张三”;
        栈存储:声明变量的东西放到这,把数据存进去(Teacher tea)
        堆存储:地址标识(唯一)、存储变量属性方法,逻辑等。然后栈来查找调用。

<span style="font-family:KaiTi_GB2312;font-size:14px;">package day03;
public class Test {
	public static void main(String[] args){
		//不会调用构造器,只是声明了一个变量是TEACHER 的类型
		TEACHER tea1 = new TEACHER();
		TEACHER tea2 = new TEACHER();
		tea1.name="jane";
		tea2.name="calot";
		
		tea1=tea2;
		
		tea1.name = "marka";
		
		System.out.println(tea1.name);
		System.out.println(tea2.name);
	}
}</span>
运行结果:marka

          marka

解:



3.jvm -- Java的垃圾清理机制:定期释放没有被调用的变量

4.构造器/构造函数
定义:任何一个类都会有一个默认的构造函数,用于构造一个实例。
格式:public 类名(){ }              //写或者不写都存在

注意:堆空间中的对象如果没有变量引用,则由java虚拟机的垃圾清理机制帮我们做清理工作
作用 1)创建兑现
     2)初始化对象的属性           //如果类中没有明确定义构造函数,编译器会自动创建一个不带参数的默认的构造函数。

  a.类名和函数名一样,对象的创建就是通过构造函数完成的,每当类实例化一个对象时,类都会自动调用构造函数。

    b.构造函数没有返回值。在定义构造函数时,构造函数没有返回值,但这与普通没有返回值的函数不同,普通没有返回值的函数使用void进行定义,而构造函数不需要使用void进行修饰。

    c.在类中定义的构造函数都不是无参的构造函数时,编译器也不会为类设置一个默认的无参构造函数,此时调用无参构造函数实例化一个对象时,编译器会报错。

    d.当new这个类的对象的时候,会自动触发构造函数,不需要我们调用。


5.方法重载(不能重复方法,因为不知调用哪个,改参数列表可以)
定义:在[同一个类]中,多个方法的方法名相同,参数列表(参数个数、顺序、类型)不同的方法互为重载方法。
普通方法重载和构造方法重载
构造方法重载:1.如果构造方法被重载了,默认无参的构造方法则不存在了
              2.构造方法重载作用,用于初始化属性

  △a.尽管在方法重载中可以使两个方法的返回值不同,但只有返回值不同并不足以区分两个方法的重载,还需要通过参数的个数及参数的类型来设置。

    b.方法的重载让方法以统一的名称被管理,使得程序代码有条理

    c.编译器是利用方法名、参数类型和参数的个数及顺序来确定类中的方法是否唯一。

6.继承
定义:子类继承父类相关的属性和方法。
关键字:extends、implements
语法:public class 子类名 extends 父类名{}
注意1)构造方法(构造当前类)不会被继承
    2)单继承

   △a.继承是类与类之间的一种关系,比如肉类属于食物,具有与食物相同的属性,便可以在创建肉类时将食物类拿来复用,并且保留食物类具有的属性。肉类保留了书无泪的属性,这样就节省了定义食物和肉共同具有的属性的时间,这就是继承的思想,节约编写代码的时间,减少错误生成的几率。

     b.继承性主要利用特定对象之间共有的属性。比方说,肉类属于食物,蔬菜类,淀粉类也属于食物。肉类和食物具有共同的特性,就是能吃,可以将肉类看做是食物的延伸,肉类复用了食物的属性,同时添加了肉类独有的属性,如肉类具有高蛋白。

7.方法重写
定义:子类重写父类的方法
条件:方法名、参数列表、返回类型必须都要一致

  △a.重写(可以理解为覆盖)就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,或者是修改成员方法的返回值类型。

    b.假设父类有一个函数是吃饭,而子类觉得单单是吃饭太简单了,需要进行改进,子类就把吃饭函数声明完完全全赋值过来,函数内容自己再写。


8.自动转型和多态
自动转型:子类的对象自动转型为父类的类型
父类类名 变量名 = new 子类类名();
注意:转型后的对象,如果子类重写了父类的方法,则执行的是重写后的,如果没有重写,则执行的是父类的
多态:多个同类型的对象,执行同一个方法,结果不一样

a.父类对象应用于子类的特征就是多态。比方说,每个动物都能跑,走,吃,睡,这个能力可以看做是该类具有的行为,如果将子类的对象统一看做是父类的实例对象,这样当跑,走,吃,睡行为发生时,简单的调用父类也就是动物类产生各种行为的方法即可。

java特性:封装性,继承性,多态性


9.总结:

1)关于重写和重载:如果在子类中定义一个与父亲方法名和参数名相同 的方法,就是重写,也就是此时子类发方法覆盖了父类的方法。而如果具有相同的方法名却有不同的参数,那么就是重载,重载的目的在于以统一的方式去处理不同类型的数据,在调用方法时通过判断所传递的参数去判断去决定具体调用哪一个方法,这也是多态性的一种体现。

2)多态性:Father son = new Son();

                      一个类的对象变量可以引用其任何一个子类的对象(反之不成立)。

3)语言的魅力在今天的课堂上呈现的淋漓尽致,它引导你不由自主的思考为什么它是这样的原理,为什么这几行代码会输出这样的结果,之后阶段的学习,更加要好好去感受,勤奋的思考。


//

补充:

1.方法分类(普通方法、构造方法、抽象方法)
格式:
普通方法:public 返回类型  方法名(参数列表){}
构造方法:public 类名(参数列表){}
抽象方法:public abstract 返回类型 方法名(参数列表);

        a.抽象方法没有方法体,这个方法本身没有任何意义,除非被重写,而承载这个抽象方法的抽象类必须被继承,也就是抽象类除了被继承之外没有任何意义。
          b.只要类中有一个抽象方法,此类就被标记为抽象类。


2.类的分类(普通类、抽象类、接口)
区别:
普通类:public class 类名{} 
1.只能定义普通方法和构造方法,一定不能有抽象方法
2.属性可以是常量,也可以是变量
3.可以创建对象

抽象类:public abstract class 类名{}
1.三种类型的方法都可以存在
2.属性可以是常量,也可以是变量
3.不能创建对象

接口:public interface 类名{}
1.一定只能有抽象方法
2.一定只能是常量
3.不能创建对象

        a.接口是抽象类的延伸,可以看成纯粹的抽象类,接口中所有方法都没有方法体。

          b.接口中定义的方法必须是public或abstract。

 
注意:在接口中,常量修饰词(static final)和抽象方法修饰词(abstract)可以省略,但是在抽象类中不能省略

3.接口/抽象类继承
格式:
抽象类继承:public class 子类类名 extends 抽象父类{}
接口继承:public class 子类类名  implements 父类接口名{}

注意:
1).抽象类和接口,当做父类使用,用于指导子类方法的定义
2).抽象类是单继承,接口是多继承

a.因为一个类可以同时实现多个接口,使用接口就可以实现多继承,这样可以将所有需要继承的接口放在implements关键字后并使用逗号隔开,但这可能会在一个类中产生较大的代码量,因为继承一个接口时需要实现接口中所有的方法。


4.总结

还需要多揣摩继承和多态,这两个本身就是比较抽象的概念,深入理解还是需要操练和时间的。

5.项目实战
this:指代当前类的对象

a.this可以调用成员变量和成员方法,还可作为方法的返回值(方法体中使用return this这种形式将类的对象进行返回)。


绘图工具(画板实现)
1).实现窗体
2).实现简单的直线绘制
监听器:用于监听某个时间的对象(监视器)
构造方法传值:传递的是地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值