学java号码_Java学习

面向对象的(构造方法的概念和使用)

A:构造方法概述和作用

* 给对象的数据(属性)进行初始化

* B:构造方法格式特点

* a:方法名与类名相同(大小也要与类名一致)

* b:没有返回值类型,连void都没有

* c:没有具体的返回值return;

classConstructor_Demo

{public static voidmain(String[] args)

{

Person p= new Person();//构造方法在类创建时初始化

}

}classPerson

{privateString name;private intage;public Person(){ //构造方法与方法名一致

name = "张三";

age=23;

System.out.println(name+"...."+age);return;//构造可以return,但是没有任何类型,所以直接一个“;”结束

}

}

运行结果:

c3043951b9aaa5b99ff72938e3b3d4f8.png

面向对象(构造方法的重载及注意事项)

A:案例演示

* 构造方法的重载

* 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表

* B:构造方法注意事项

* a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。

* b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。

* 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法

A:

运行代码:

classConstructor_Demo1

{public static voidmain(String[] args)

{

Person p1= new Person();//无参构造

p1.show();

Person p2= new Person("张三",23);//有参构造

p2.show();

}

}classPerson

{privateString name;private intage;public Person(){ //构造方法与方法名一致

System.out.println("这是无参构造");

}public Person(String name,intage){this.name =name;this.age =age;

System.out.println("这是有参构造");

}public voidshow(){

System.out.println(name+"...."+age);

}

}

运行结果:

03411f46c59c84531e63198fd668b723.png

内存执行图:

fb1253638a8abf837cbc152ca14b9020.png

B:(a)如果我们没有给出构造方法,系统将自动提供一个无参构造方法。

classConstructor_Demo1

{public static voidmain(String[] args)

{

Person p1= new Person();//无参构造

p1.show();/*Person p2 = new Person("张三",23);//有参构造

p2.show();*/}

}classPerson

{privateString name;private intage;/*public Person(){ //构造方法与方法名一致

System.out.println("这是无参构造");

}*/

/*public Person(String name,int age){

this.name = name;

this.age = age;

System.out.println("这是有参构造");

}*/

public voidshow(){

System.out.println(name+"...."+age);

}

}

运行结果:

ce42806f13f71c96ccd0c973942e87b3.png

在代码上我注释掉了自己创建的有参构造方法和无参构造方法,依旧出现和无参构造一样的结果,这就是因为系统在我们没有创建构造方法时,为我们自动创建了空参构造方法。

B:(b)如果我们给出了构造方法,系统将不再提供默认的无参构造方法

我注释掉自己创建的无参构造方法,只留下有参构造方法,在new p1时系统会报错,因为当自己创建构造方法时系统将不会自动创建空参构造方法,所有会报错。

运行代码:

classConstructor_Demo1

{public static voidmain(String[] args)

{

Person p1= new Person();//无参构造

p1.show();/*Person p2 = new Person("张三",23);//有参构造

p2.show();*/}

}classPerson

{privateString name;private intage;/*public Person(){ //构造方法与方法名一致

System.out.println("这是无参构造");

}*/

public Person(String name,intage){this.name =name;this.age =age;

System.out.println("这是有参构造");

}public voidshow(){

System.out.println(name+"...."+age);

}

}

报错截图:

b4f0de7d85ccd97fdd9154b017e90359.png

面向对象(给成员变量赋值的两种方式的区别)

* A:构造方法

* 给对象中属性进行初始化

* B:setXxx()方法

* 修改属性值

运行代码:

classConstructor_Demo2

{public static voidmain(String[] args)

{

Person p= new Person("张三",23);//有参构造

p.show();

p.setName("李四");

p.setAge(24);

p.show();

}

}classPerson

{private String name; //姓名

private int age; //年龄

public Person(String name , int age){ //有参构造方法

this.name =name;this.age =age;

System.out.println("这是有参构造");

}public void setName(String name){ //设置姓名

this.name =name;

}public void setAge(int ae){ //设置年龄

this.age =age;

}public voidshow(){

System.out.println(name+"....."+age);

}

}

运行结果:

4bc150788fed0e8e7bd124f259b78d1c.png

面向对象(学生类的代码及测试)(掌握)

* A:案例演示

* 学生类:

* 成员变量:

* name,age

* 构造方法:

* 无参,带两个参

* 成员方法:

* getXxx()/setXxx()

* show():输出该类的所有成员变量值

* B:给成员变量赋值:

* a:setXxx()方法

* b:构造方法

* C:输出成员变量值的方式:

* a:通过getXxx()分别获取然后拼接

* b:通过调用show()方法搞定

运行代码

classStudent_Demo

{public static voidmain(String[] args)

{

Student s= new Student("张三",23);//有参构造

s.show();

s.setName("李四");

s.setAge(34);

s.show();

}

}classStudent

{private String name; //姓名

private int age; //年龄

publicStudent(){

System.out.println("这是无参构造");

}public Student(String name , int age){ //有参构造方法

this.name =name;this.age =age;

System.out.println("这是有参构造");

}public void setName(String name){ //设置姓名

this.name =name;

}public void setAge(int age){ //设置年龄

this.age =age;

}public String getName(){ //返回姓名

returnname;

}public int getAge(){ //返回年龄

returnage;

}public voidshow(){

System.out.println(getName()+"....."+getAge());

}

}

运行结果

3519b5d3fa03e83fbf3ac35f0965a1a6.png

面向对象(手机类的代码及测试)(掌握)

* A:案例演示

* 模仿学生类,完成手机类代码

运行代码

classPhone_Demo

{public static voidmain(String[] args)

{

Phone p= new Phone("诺基亚",110);

p.show();

p.setName("黑莓");

p.setNumber(120);

System.out.println(p.getName()+"...."+p.getNumber());

}

}classPhone

{private String name; //姓名

private int number; //号码

publicPhone(){

System.out.println("无参构造方法");

}public Phone(String name , int number){ //有参构造方法

this.name =name;this.number =number;

System.out.println("这是有参构造");

}public void setName(String name){ //设置型号

this.name =name;

}public void setNumber(int number){ //设置号码

this.number =number;

}public String getName(){ //返回型号

returnname;

}public int getNumber(){ //返回号码

returnnumber;

}public voidshow(){

System.out.println(name+"....."+number);

}

}

运行结果

eb61ad2989a81fe530d0d099c9510e94.png

面向对象(static关键字及内存图)(了解)

* A:案例演示

* 通过一个案例引入static关键字。

* 人类:Person。每个人都有国籍,中国。

country不设置static关键字之前的代码:

classstatic_Demo

{public static voidmain(String[] args)

{

Person p1= newPerson();

p1.name= "李四";

p1.country= "中国";

p1.show();

Person p2= newPerson();

p2.name="王五";

p2.country= "中国";

p2.show();

}

}classPerson

{

String name;//姓名

String country; //国籍

publicPerson(){

name="张三";

country="中国";

}public voidshow(){

System.out.println(name+"....."+country);

}

}

country不设置static关键字之前的内存图:

399f50b653faa2692fddaca3619580da.png

country设置static关键字之后的代码:

classstatic_Demo

{public static voidmain(String[] args)

{

Person p1= newPerson();

p1.name= "李四";

p1.show();

Person p2= newPerson();

p2.name="王五";

p2.show();

}

}classPerson

{

String name;//姓名

static String country; //国籍

publicPerson(){

name="张三";

country="中国";

}public voidshow(){

System.out.println(name+"....."+country);

}

}

country设置static关键字之后的内存图

e3516b62978950cc48b565b6705ad2d4.png

static关键字的特点

* a:随着类的加载而加载

* b:优先于对象存在

* c:被类的所有对象共享

* 举例:咱们班级的学生应该共用同一个班级编号。

* 其实这个特点也是在告诉我们什么时候使用静态?

* 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。

* 举例:

* 饮水机(用静态修饰)

* 水杯(不能用静态修饰)

* 共性用静态,特性用非静态

* d:可以通过类名调用

* 其实它本身也可以通过对象名调用。

* 推荐使用类名调用。

* 静态修饰的内容一般我们称其为:与类相关的,类成员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值