-
也就是cpp类里面的函数
修饰符+返回类型+名字+(参数列表)+{块}
public void function(int a){;} -
对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;
}
}
- 重载
java重载当然也是有的,记住一点即可
重载要求:参数列表不同,可以根据参数区分不同的重载函数
- 和cpp没啥两样,当然,构造方法也支持重载
class ClassName{
// 无参构造
void ClassName(){
......
}
}
- 不过有个比较s的 *** 作,就是可以通过this来指向其他构造方法
class c1 {
int num = 10;
public c1(int a) {
num = a;
}
public c1() {
// 调用上面的构造方法,参数120
this(120);
}
}
- 析构方法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");
}
}
析构被调用了
只要是个面向对象基本上逃不掉:封装继承多态
继承关键字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;
}
}
方法自变量
根据以上特性,方法的参数也可以产生**“多态性”**可以接受不同种类的对象了
异类集合
同理,也可以把多种不同的类对象,塞到同一个数组中
真*重写,真的就继承之后重写一遍就重写了
super调用父类
super和前面this的用法一样,也可以调用父类构造
注意:要调用父类构造,必须子类没有任何 *** 作
注意点:
重写后的权限:访问权限不能小于父类的,权限还是得继承的
重写抛出异常不能多于父类
public void function()throw IOExcetion{/*抛出异常*/}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)