Javase的构造方法


总结:1.public class NoteBook{ public void open(){system.out.println("")} public void close(){system.out.println("")} public static run(){system.out.println("")}
public void useUsb(USB usb){ usb.cr();usb.bc()} 这里直接传一个USB的接口对象过来利用多态的原理,它的实现类谁在main方法中传的那个实现类对象,这里就是谁调方法
useUsb(键盘),useUSB(鼠标);因为这里的接口USB 的实现类没有自己独有的方法所以这里只需要多态不需要向下转型,也就不需要intranceof进行判断了;
2.构造方法就行在创建对象的同事明确对象的属性值: 修饰符 构造方法名(要和所在类的名字一样) (参数列表){} ;public Person(参数){}
3.public Person(String name,int age){this.name=name;this.age=age}这里加this是表示本类的意思,是为了区别传过来的name和age,this.name表示上面的成员变的name;
this.name=name表示成员变量的name被赋值传参过来的String name的值;
4.构造方法是用的方法重载的原理,因为构造方法的名字都要和本类的名字一样所以需要通过参数列的个数,类型,顺序的不同来区别
5.实际上我们之前用的Dog dog=new Dog()就是用的构造函数创建对象;new Dog()就是用的系统默认的构造方法,
6.构造方法没有返回值void也不需要返回值,因为它是为了构建对象的,对象创建完后它就消失了(加上返回值就成了普通方法了);
构造方法的名字要和本类的名字一样;构造方法没有具体的返回值
7.在编译java文件的时候系统会自动给文件加上默认的构造方法,如果我们写了构造方法,那么无论是否是有返回值那么系统的默认构造方法就会消失;
8.一个类中可以有多个构造方法,构造方法直接通过参数列表的参数不同;来进行区分,就是方法的重载
9.构造方法也可以被private修饰,被private修饰的构造方法不能被其他类调用;
10.构造方法:在创建对象(new对象)的时候执行,且只能执行一次,没有返回值;
11.一般方法:在对象创建后调用的时候执行,需要得时候调用后才能执行,能被多次重复调用,有返回值
12.当一个类里面一个构造方法都没有时;系统默认给你填一个空参构造但是看不见;也就是能调用Person p=new Person();方法new对象但是当类里面有一个构造方法无论是有参还是
无参,系统默认的构造方法就不存在了,就不能Person p=new Person();除非自己写写一个private修饰的空参构造方法,因为private修饰的方法不能被类以外调用所以创建后就不能再
new对象了,因为private的构造方法一出现系统自带的就消失,也没有创建有参的构造方法,那就不能再new对象了
13.Person p=new Person();这个是调用的默认构造或者是空参构造,调用的对象赋的是默认值;\
Person p2=new Person("张三",12);这个调用的是有参构造,传递的参数会在构造方法中给new的对象赋值(名字:张三,年龄:12)
14.this可以调用本类的方法和属性;通过:this.方法名();this.属性名的方式进行调用
15.this也可以调用构造方法;this(参数列表)的形式调用;this(参数列表)构造方法可以被本类的其他构造方法调用但是必须要放在方法的第一行,因为需要给其赋默认值
16.构造刚刚只在创建对象new对象的时候会给对象赋值;后期可以通过 ;对象名.setName("值")的形式进行改值;
17.public Student(){this("张三",18)这里可以是构造方法调构造方法;但是this(name,age)调用有参构造的时候必须是赋实际值,不能是形参this("张三",18)}
而且this()要放在构造方法的第一行;
18.调用本类中的构造方法:this(参数列表);调用父类无参构造:super();调用父类有参构造:super(参数列表)
19.super()是父类的构造方法;调用父类的属性和方法:super.属性名;super.方法名
20.在每一个构造方法的第一行都会有一个隐藏的默认的super()父类的空参构造,所以运行子类的空参构造也会打印出父类的构造方法
21.父类的空参构造私有化了那么子类就无法继承父类的空参构造方法,这个时候子类的构造方法就需要赋值才行
22.每一个类都有自己的父类构造,就算是父类也有自己的父类构造;Object类的构造
23.构造方法运行顺序:先运行父类的构造方法或者所继承的默认的父类空参构造(super());再运行子类的构造方法;this()和super()不能同时存在
24.如果即想要调用this()又想要调用super()那么就把super()放进子类的构造函数中;再在空参构造中调用this();就能实现即调用this()又调用super()
25.super()调用父类无参构造;super(参数列表)调用父类的有参构造;super()和this()都要放在构造方法的第一行;
26.final可以修饰:类,类的成员(成员变量+成员方法)+以及局部变量(final修饰的变量是个常量,被赋值后不能改变;(变量的值是可以改变的));不能修饰构造方法
27.final修饰的类不能被继承但可以继承其他类;final修饰的变量称为常量,一次赋值终身不变,只能赋值一次;修饰成员变量需要在创建对象前赋值或者用构造方法进行赋值
28.public student(String name,int age){super(name,age)};public student(String name,int age)方法这里的参数列表是接收main方法传递过来的值的
super(name,age);super方法的参数列表是把子类构造方法student的值传给父类构造方法的;因为这里调的是父类的super方法所以是传给父类的;student方法在main方法
里被调用所以student方法的参数列表是为了接收main方法传过来的值和父类方法没有关系,因为父类方法也没有调用student方法所以也没法传
所以public student(String name,int age)传递参数只和main方法调用对象有关和父类没有关系
29.方法重写是对继承来说的,子类继承方法后按照自己需要改内容;重载是在本类里面发生的通过参数列表的参数类型、个数、顺序的不同来区分
30.final:final修饰的类不能被继承但是可以继承别人;final修饰的方法不能被重写但是可以继承普通方法后加final;final修饰的变量一旦被赋值后不能被改变
在修饰成员变量时需要在对象创建前赋值;也可以通过构造方法进行赋值
31匿名函数:在创建对象时只有创建的语句却没有把地址赋值给一个变量;就是创建的对象没有名字,只能使用一次,每次调用都不是同一个对象而且地址也不一样
普通的对象创建:Student stu=new Student()
匿名对象的创建:new Student()
所以说匿名对象没有名字;每次创建都不是同一个对象,每次创建只能使用一次

猜你喜欢

转载自www.cnblogs.com/hankai2735/p/11295265.html