您的位置:首页 > 编程语言 > Java开发

Java中的构造器、继承、多态知识

2016-11-07 13:51 417 查看
Java构造器与继承
1.Java中构造函数(又称Java构造器):

理解:Java中的构造函数和C++中的构造函数很类似,但在C++中还会存在相应的析苟函数用来释放构造函数的内存,但Java中却不存在析构函数,因为Java中有垃圾自动回收机制,好比一个扫地阿姨,定时清理Java中产生的垃圾,释放内存;

作用:用于构造当前类的对象,在构造对象时直接进行赋值操作

注意:

1)任何一类都会有默认的构造方法

public 类名(){}

2)构造方法有返回值,返回内存地址,方便对其进行引用

3)创建对象的时候,构造方法帮助我们寻找没有使用的堆空间(内存中分为栈空间和堆空间,栈空间用于存储变量等,堆空间存储的是对象的具体代码),然后拷贝当前类的数据到空间中进行存储

public class Student {

public Student(){

System.out.println("执行了构造方法");

}

}

public class Test {

public static void main(String[]
args) {

Student stu =
new Student();

}

}

运行结果:



附图如下:





2、Java中的方法重载

理解:跟C++中的方法重载类似,同样的方法名,但参数类型,个数,顺序不同;

定义:同一个类当中,多个方法的方法名相同、参数列表不同(参数个数、顺序、类型)

作用:体现做同样一件事情的不同流程

注意:返回类型没有约束,可以随意进行更换

使用:调用重载方法时候,系统会根据调用时候传递的具体参数来匹配调用哪个重载方法

代码说明:

public class Student {

public void study(){

System.out.println("无");

}

public void study(int a){

System.out.println("a");

}

public void study(int a,int b){

System.out.println("a");

}

public void study(String
a){

System.out.println("a");

}

}

public class Test {

public static void main(String[]
args) {

Student stu = new Student("张三");

stu.study(10);

stu.study(10,
"aa");

}

}

运行结果:



构造方法重载:

1)如果重载了构造方法,则默认无参的构造方法就不存在了,还需要则要显性定义出来

2)作用可以用于初始化当前对象的一些属性

public class Student {

public String name;

public Student(){}//默认构造方法,如果重载了构造方法,则默认无参的构造方法就不存在了,还需要则要显性定义出来,

public Student(String n){

name = n;

}

}

public class Test {

public static void main(String[]
args) {

Student s= new Student();

Student stu = new Student("张三");

System.out.println(s.name);

System.out.println(stu.name);

}

}

运行结果:



3、Java中的继承

继承:一个类可以通过继承关系,把当前类的属性和方法传递下去

注意:1)子类继承父类,会拥有父类所有非私有的属性和方法

2)子类拥有的属性和方法必然会比父类更加全面

3)动态拓展子类中的方法和属性

父类D:

public class D {

public void t(){

System.out.println("执行D的t方法");

}

}

子类A:

public class A
extends D{

public void fun(){

System.out.println("You are very fun!");

}

}

测试类:Test

public class Test {

public static void main(String[]
args) {

A a =
new
A();

a.t();

a.fun();

}

}

运行结果:



4、Java中方法的重写

定义:子类继承父类,子类定义一个和父类方法名相同、参数列表相同、返回类型相同的方法,体现的是方法重写

目的:就是为了完成子类修改父类方法的执行过程

注意:

1)方法重写必须建立在继承的前提下

子类定义的方法和父类继承过来的方法方法名、返回值类型、参数列表必须完全相同

子类定义的方法访问权限不能缩小,只能扩大或者保持一致

public class A
extends D{

//重写从D中继承的t方法

public void t(){

System.out.println("执行A中的方法");

}

public void fun(){

System.out.println("You are very fun!");

}

}

运行结果:



5、Java自动转型和多态

自动转型:子类的对象自动转型为父类的类型

注意:如果转型后的对象调用方法,这个方法如果子类重写了,则执行的是重写后的,如果没有重写,则调用的是父类的

多态:多个同一个类型的对象,调用同一个方法,执行的过程不一样,多态的前提是有继承关系并且子类中重写了父类当中的某些方法;

子类B:

public class B
extends D{

public int age;

public void test(){}

public void t(){

System.out.println("执行B的t方法");

}

}

测试类:Test

public class Test {

public static void main(String[]
args) {

B b = new B();

b.t();

//自动转型:D是B的父类

D entity = new B();

D entity1 = new D();

entity.t();

entity1.t();

}

}

运行结果:



6、this关键字

代表一个对象,当前类的对象

如何区分this当前所代表是哪个类的对象:

首先看this是不是在当前类中使用,如何是,那么this代表的就是当前类的对象,如果this在某一方法中使用,那么看这个方法是哪个类调用的,this属于调用该方法的类的对象

注意:this是动态变化的,不是不变的,可能this现在代表的是这个类的对象,等会可能代表的是另一类的对对象了;生活中常说这个人,指的是现在在你面前的人,可能等会再说这个人就不是同一个人了;

7.心得体会

虽然这些知识曾经在课堂上学习过,但温故而知新,这次学习一方面加深了对这些知识的理解,同时,把以前学的不是很好的多态以及Java中引用、返回值等方面的知识更加深入的理解了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: