java笔记1.04

java笔记1.04,第1张

1. 方法
  1. 也就是cpp类里面的函数
    修饰符+返回类型+名字+(参数列表)+{块}
    public void function(int a){;}

  2. 对c1类中的上两个change方法和下两个change方法做区分
    知道明确其区别

public class test01 {
    public static void main(String[] args) {
        System.out.println("he");
    }
}

class c1 {
    public int a = 10;

    public void change0() {
        a = 20;
    }

    public void change1(int num) {
        a = num;
    }

    public void change2(c1 ClassName) {
        ClassName.a = 20;
    }

    public void change2(c1 ClassName, int num) {
        ClassName.a = num;
    }
}
  1. 重载
    java重载当然也是有的,记住一点即可
    重载要求:参数列表不同,可以根据参数区分不同的重载函数
2. 对象构造,初始化
  1. 和cpp没啥两样,当然,构造方法也支持重载
class ClassName{
	// 无参构造
	void ClassName(){
	......
	}

}
  1. 不过有个比较s的 *** 作,就是可以通过this来指向其他构造方法
class c1 {
    int num = 10;

    public c1(int a) {
        num = a;
    }
    public c1() {
    	// 调用上面的构造方法,参数120
        this(120);
    }
}
  1. 析构方法finalize()
    java的析构长得比较别致
    protected void finalize() throws Throwable
public class test01 {
    public static void main(String[] args) {
        c1 testc1 = new c1();
        // 将不用的变量置为null,或者野指针,让虚拟机去管理内存
        testc1 = null;
        // 用于内存回收,尝试去释放(野指针,空指针)
        System.gc();
    }
}
class c1 {
    protected void finalize() throws Throwable {
        System.out.println("I was free by memory");
    }
}

析构被调用了

3. 继承

只要是个面向对象基本上逃不掉:封装继承多态
继承关键字extends
修饰符+class 子类名+extends+父类名
{…}
java所有类都继承了Object类
Java中所有类,都会有Object类的方法
getClass():返回该对象所属的类
toString();返回类名
class.equal(class):判断俩类是否相等
clone():对象克隆(前面讲过,对象不可以直接等号赋值,那是引用)
hashCode() :f返回该对象哈希码值

这个toStirng挺有意思的

public class test01 {
    public static void main(String[] args) {
        c1 testc2 = new c1();
        System.out.println(testc2.toString());
    }
}

class c1 {
    int a = 10;
}

4. 转换对象

这是j一个比较特别的地方
有点像int和float,int 可以转float,但是反过来却不行

public class test01 {
    public static void main(String[] args) {
    // 有点不能理解,和我想得相反,不应该是大的可以包纳小的吗
        c1 testc2 = new c2();
        System.out.println(testc2.a);
        if (testc2 instanceof c1) {
            System.out.println("testc2是c1类");
        } else {
            System.out.println("testc2是c2类");
        }
    }
}

class c1 {
    public int a = 10;
}

class c2 extends c1 {
    public int b = 20;
}
}

方法自变量
根据以上特性,方法的参数也可以产生**“多态性”**可以接受不同种类的对象了

异类集合
同理,也可以把多种不同的类对象,塞到同一个数组中

5. 方法重写

真*重写,真的就继承之后重写一遍就重写了
super调用父类
super和前面this的用法一样,也可以调用父类构造
注意:要调用父类构造,必须子类没有任何 *** 作

注意点:
重写后的权限:访问权限不能小于父类的,权限还是得继承的
重写抛出异常不能多于父类

public void function()throw IOExcetion{/*抛出异常*/}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/877736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存