2020年6月学习记录

2020年6月26日

java

类方法不能调用实例变量

在这里插入图片描述

类方法调用实例变量只能通过在方法中声明一个实例后在调用,否则只能将实例变量改变为类变量

对象初始化:

构造方法类似于C++的构造函数,方法名和类名相同,不返回返回类型,通常为公有的 引用类型的初值是null,基本数据类型的初始值是0或0.0 构造方法也可以重载(参数表必须不同) 像C++一样,不声明构造方法,编译器会构造默认构造方法(在声明构造方法之后不会自动生成) 可以使用this关键字在一个构造方法中调用另一个构造方法:this("",99999,0.0f),一般是在参数少的构造方法中调用参数最多的构造方法。 final实例变量可以在定义时给出初始值,也可以在构造方法中初始化。 但是final类变量必须在声明的同时初始化。

内存回收

在这里插入图片描述

没有引用指向new Book(3)对象,所以会被回收

枚举类

在这里插入图片描述

有限
在这里插入图片描述

枚举类不能有public的构造方法
在这里插入图片描述

import java.util.*;
enum Season
{
    dgh,shi,zuibang,de
}
class test  
{
	public static void main (String[] args) throws java.lang.Exception
	{
	    
	    for(Season s : Season.values())
	        System.out.println(s);
		
	}
}

dgh
shi
zuibang
de

重写toString()方法

import java.util.*;
enum Season
{
    dgh,shi,zuibang,de
}
class test  
{
    String name;
    public String toString()
    {
        return "这个对象这个对象这个对象name:"+name;
    }
    public test(String name)
    {
        this.name = name;
    }
	public static void main (String[] args) throws java.lang.Exception
	{
	    
	    test t = new test("dgh");
	    System.out.println(t);
		
	}
}

这个对象这个对象这个对象name:dgh

2020年6月27日06:36:54

java

类的继承:

java中只支持单继承,一个类只能有一个直接超类;子类包括与超类相同的接口,可以具有更多的方法和数据成员;class ClassName extends SuperClassName{};;person->Employee->Manager;

隐藏和覆盖

隐藏和覆盖:子类可以重新定义超类的方法,超类的同名方法或同名数据成员会被覆盖,也就是隐藏了。如果重复声明,直接访问是子类的成员,使用super.x是访问超类的属性

静态成员不被继承,但是子类都可以访问超类的静态成员

派生类必须覆盖基类中的抽象的方法,否则派生类自身也成为了抽象类;final方法不需覆盖;static方法不可覆盖;使用super.func()就可以调用超类的方法

import java.io.*;
class A{
    int x = 1;
}
class B extends A
{
    int x = 10;
    public void print()
    {
        super.x++;
        System.out.println(super.x);
    }
}
class test  
{
	public static void main (String[] args) throws java.lang.Exception
	{
	    B b = new B();
	    b.print();
// 		System.out.println("hi");
	}
}

Object类

在这里插入图片描述

Object类:getClass()方法;toString()方法;同一:两个引用是否指向同一对象;相等:两个对象相等;a==b用于判断两个引用是否指向同一个对象,不能判断对象是否相等;等效于a.equals(b)也是判断同一

在对象被垃圾回收器回收之前,需要自动调用对象的finalize方法

clone()方法,在Object中是protected的,所以需要覆盖为public

getClass()方法可以返回对象的类,
它是一个final方法
可以通过函数参数obj.getClass().getName()来查询类的各种信息,如名字,静态数据等,这里obj.getClass()相当于类名、

2020年6月28日

java

终结类和终结方法:

被final修饰;终结类不能继承;终结方法不能被覆盖;

在这里插入图片描述

参数表不一样不算重写
在这里插入图片描述

不能修饰interface的接口

在这里插入图片描述

抽象方法、

抽象类:类名前添加abstract;可包含常规类的任何成员;包括非抽象方法;没有实例对象的类,不能使用new进行实例化,只能作为超类;抽象方法:仅有方法原型,没有方法体,具体实现有子类的各自类声明中完成;要写抽象方法,必须在抽象类中;具体方法:1、声明一个抽象类,在类中声明一个抽象方法,方法不具体实现,2、在子类中具体实现该抽象方法。

只有接口类可以包含接口方法

泛型

泛型:将类型参数化;泛型的类、接口、方法;class A ;使用时A a = new A();可以使用?作为通配符

在这里插入图片描述

在这里插入图片描述

类的组合:

是一种类的重用机制,将已存在类的对象放在新类中;可能继承和组合都用得上;
小结:类的重用:1、继承和组合;2、Object类的主要方法,是所有类的超类;3、终结方法不许覆盖;4、在最顶层的抽象超类中声明原型,无法实现方法体;

接口与多态:

接口的概念和编写;接口就是纯的抽象类;接口中全部都是抽象方法,没有具体实现;实现多继承、具有统一的对外服务接口;多态:可以将子类对象充当超类对象用,统一发送相同的消息,不同对象对其的响应方式是不同的;

在这里插入图片描述

接口只提供设计,不提供具体实现,是一个纯的抽象类;继承多个设计;建立类与类之间的协议;在看起来不相干的对象之间建立相同的接口;interface 接口名称 【extends 父接口名】;接口的数据成员一定有初值且不能修改,等价于省略final关键字;接口中的方法必须是“抽象方法”,可以省略public 和 abstract;;接口不能实例化;语法:public class A implements 接口名称{实现接口的抽象方法;} 可以实现多个接口,利用多继承:在implements后面添加多个接口,可以实现多重继承;接口与接口之间也可以有继承关系;接口支持多继承,在extends后面可以有多个接口;

如果是抽象类可以实现部分接口中的抽象方法,但是如果时非抽象类,必须实现所有的接口抽象方法;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章