Java学习

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

 A:构造方法概述和作用
* 给对象的数据(属性)进行初始化
* B:构造方法格式特点
* a:方法名与类名相同(大小也要与类名一致)
* b:没有返回值类型,连void都没有
* c:没有具体的返回值return;

class Constructor_Demo 
{
    public static void main(String[] args) 
    {
        Person p = new Person();//构造方法在类创建时初始化
      
    }
}

class Person 
{
    private String name;
    private int age;
    
    public Person(){     //构造方法与方法名一致
       name = "张三";
       age=23;
       System.out.println(name+"...."+age);
       return;//构造可以return,但是没有任何类型,所以直接一个“;”结束
    }
}

运行结果:

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

A:案例演示
* 构造方法的重载
* 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表
* B:构造方法注意事项
* a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
* b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
* 注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法

A:

 运行代码:

class Constructor_Demo1 
{
    public static void main(String[] args) 
    {
        Person p1 = new Person();//无参构造
        p1.show();

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

class Person 
{
    private String name;  
    private int age;
    
    public Person(){     //构造方法与方法名一致
      System.out.println("这是无参构造");
      
    }
    public Person(String name,int age){
       this.name = name;
       this.age = age;
       System.out.println("这是有参构造");
    }
    public void show(){
     System.out.println(name+"...."+age);
    }

}

 运行结果:

内存执行图:

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

class Constructor_Demo1 
{
    public static void main(String[] args) 
    {
        Person p1 = new Person();//无参构造
        p1.show();

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

class Person 
{
    private String name;  
    private int age;
    
    /*public Person(){     //构造方法与方法名一致
      System.out.println("这是无参构造");
      
    }*/
    /*public Person(String name,int age){
       this.name = name;
       this.age = age;
       System.out.println("这是有参构造");
    }*/
    public void show(){
     System.out.println(name+"...."+age);
    }

}

运行结果:

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

 

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

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

运行代码:

class Constructor_Demo1 
{
    public static void main(String[] args) 
    {
        Person p1 = new Person();//无参构造
        p1.show();

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

class Person 
{
    private String name;  
    private int age;
    
    /*public Person(){     //构造方法与方法名一致
      System.out.println("这是无参构造");
      
    }*/
    public Person(String name,int age){
       this.name = name;
       this.age = age;
       System.out.println("这是有参构造");
    }
    public void show(){
     System.out.println(name+"...."+age);
    }

}

 报错截图:

 

面向对象(给成员变量赋值的两种方式的区别)
* A:构造方法
* 给对象中属性进行初始化

* B:setXxx()方法
* 修改属性值 

运行代码:

class Constructor_Demo2 
{
    public static void main(String[] args) 
    {
        
        Person p = new Person("张三",23);//有参构造
        p.show();
        
        p.setName("李四");
        p.setAge(24);
        p.show();


      
    }
}

class Person 
{
    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 void show(){
     System.out.println(name+"....."+age);
    }

}

运行结果:

 

面向对象(学生类的代码及测试)(掌握)
* A:案例演示
* 学生类:
* 成员变量:
* name,age
* 构造方法:
* 无参,带两个参
* 成员方法:
* getXxx()/setXxx()
* show():输出该类的所有成员变量值
* B:给成员变量赋值:
* a:setXxx()方法
* b:构造方法

* C:输出成员变量值的方式:
* a:通过getXxx()分别获取然后拼接
* b:通过调用show()方法搞定

运行代码

class Student_Demo 
{
    public static void main(String[] args) 
    {
        
        Student s = new Student("张三",23);//有参构造
        s.show();
        
        s.setName("李四");
        s.setAge(34);
        s.show();


      
    }
}

class Student 
{
    private String name;  //姓名
    private int age;      //年龄

    public Student(){
    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(){  //返回姓名
       return name;
    }
    public int getAge(){ //返回年龄
       return age;
    }

    
    public void show(){
     System.out.println(getName()+"....."+getAge());
    }

}

运行结果

 

面向对象(手机类的代码及测试)(掌握)
* A:案例演示
* 模仿学生类,完成手机类代码

运行代码

class Phone_Demo
{
    public static void main(String[] args) 
    {
        Phone p = new Phone("诺基亚",110);
        p.show();

        p.setName("黑莓");
        p.setNumber(120);
        

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


      
    }
}

class Phone
{
    private String name;  //姓名
    private int number;   //号码
    
    public Phone(){
     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(){  //返回型号
       return name;
    }
    public int getNumber(){    //返回号码
       return number;
    }

    
    public void show(){
     System.out.println(name+"....."+number);
    }

}

运行结果

 

面向对象(static关键字及内存图)(了解)
* A:案例演示
* 通过一个案例引入static关键字。
* 人类:Person。每个人都有国籍,中国。

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

class static_Demo
{
    public static void main(String[] args) 
    {
        Person p1 = new Person();
        p1.name = "李四";
        p1.country = "中国";
        p1.show();

        Person p2 = new Person();
        p2.name="王五";
        p2.country = "中国";
        p2.show();




      
    }
}

class Person
{
    String name;   //姓名
    String country; //国籍
    
    public Person(){
     name="张三";
     country="中国";
    }
    
    public void show(){
     System.out.println(name+"....."+country);
    }

}

 

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

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

class static_Demo
{
    public static void main(String[] args) 
    {
        Person p1 = new Person();
        p1.name = "李四";
        
        p1.show();

        Person p2 = new Person();
        p2.name="王五";
        
        p2.show();




      
    }
}

class Person
{
    String name;   //姓名
   static String country; //国籍
    
    public Person(){
     name="张三";
     country="中国";
    }
    
    public void show(){
     System.out.println(name+"....."+country);
    }

}

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

static关键字的特点
* a:随着类的加载而加载
* b:优先于对象存在
* c:被类的所有对象共享
* 举例:咱们班级的学生应该共用同一个班级编号。
* 其实这个特点也是在告诉我们什么时候使用静态?
* 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
* 举例:
* 饮水机(用静态修饰)
* 水杯(不能用静态修饰)
* 共性用静态,特性用非静态
* d:可以通过类名调用
* 其实它本身也可以通过对象名调用。
* 推荐使用类名调用。
* 静态修饰的内容一般我们称其为:与类相关的,类成员

转载于:https://www.cnblogs.com/maoliu/p/9874006.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值