0
点赞
收藏
分享

微信扫一扫

JAVA入门——浅谈类与对象

天涯学馆 2022-04-22 阅读 42
java

目录

一、面向对象与面向过程

1.1 两者的概念

1.2 举例

二、类和对象的概念

2.1 概念

2.2 基本语法

//创建类
class <class_name> {
	field; //成员属性
	method; //成员方法
}
//创建一个对象
<class_name> <对象名> = new <class_name>();

2.3 举例

  1. 每个人都有名字,年龄,国籍,这些成为属性。
  2. 每个人都会吃和睡觉,这些成为行为。
  3. 我们可以创建这个类
  4. 有个这个类我们就可以创建对象,用new关键字
  5. 通过对象去调用这个属性和方法
  6. 于是又变成了下面代码的样子
public class Note {
    public static void main(String[] args) {
    	//创建一个人对象
        Person person = new Person();
        person.name = "张三";//给这个对象的name属性赋值
        person.age = 18;
        person.country = "中国";
        person.show();//调用这个对象的show方法
        Person person1 = new Person();
        person1.show();
    }
}
class Person {
    String name;
    int age;
    String country;
    public void eat(){
        System.out.println("I can eat");
    }
    public void sleep() {
        System.out.println("I can sleep");
    }
    public void show(){
        System.out.println("name:" + name + " age:" + age + " country:" + country);
    }
}
输出:
name:张三 age:18 country:中国
name:null age:0 country:null

2.4 内存布局

在这里插入图片描述

2.5总结

 person2.name = "z";

三、static关键字

看见static,与对象无关,是个公有,共有的含义

3.1 static修饰属性,类属性,类变量

public class Note {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "张三";
        person.age = 18;
        person.show();
        System.out.println("-----------------------------------");
        Person person1 = new Person();
        person.country = "A国";
        person.show();
        person1.show();
        System.out.println("-----------------------------------");
        person.country = "B国";
        person.show();
        person1.show();
    }
}
class Person {
    String name;
    int age;
    static String country = "中国";
    public void show(){
        System.out.println("name = " + name + ",age = " + age + ",country = " + country);
    }
}
输出:
name = 张三,age = 18,country = 中国
-----------------------------------
name = 张三,age = 18,country = A国
name = null,age = 0,country = A-----------------------------------
name = 张三,age = 18,country = B国
name = null,age = 0,country = B

内存图:
在这里插入图片描述

3.2 static修饰方法,类方法,工具方法

public class Note {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "张三";
        person.age = 18;
        person.show();
        Person.fun();
    }
}
class Person {
    String name;
    int age;
    static String country = "中国";
    static void fun(){
        System.out.println("静态方法");
        //show(); //error
        System.out.println(country);
    }
    public void show(){
        System.out.println("name = " + name + ",age = " + age + ",country = " + country);
    }
}
输出:
name = 张三,age = 18,country = 中国
静态方法
中国

3.3 static修饰代码块

3.3.1 普通代码块

public class Note {
    public static void main(String[] args) {
    	//普通代码块
        {
            int x = 20;
        }
        int x = 10;
        System.out.println("x = " + x);
    }
}
输出:
x = 10;

3.3.2 成员代码块

public class Note {
    public static void main(String[] args) {
        Person person = new Person();
        Person person1 = new Person();
    }
}
class Person {
    private String name;
    //构造快
    {
        System.out.println("1 构造快");
    }
    public Person(){
        System.out.println("2 构造方法");
    }
}
输出
1 构造快
2 构造方法
1 构造快
2 构造方法

3.3.3 静态代码块

四、面向对象的封装特性,暂时学过private

4.1 修饰符权限

举例

public class Note {
    public static void main(String[] args) {
        Bank bank = new Bank();
        bank.setPassword();
    }
}
class Bank {
    private String card;
    private String passwpord = "123456";
    private double val;
    public String getCard(){
        return card;
    }
    public void setPassword(){
        Scanner scanner = new Scanner(System.in);
        int count = 0;
        while(true){
            System.out.println("输入原密码:");
            String oldPass = scanner.nextLine();
            if (oldPass.equals(passwpord)){
                System.out.println("输入新密码");
                passwpord = scanner.nextLine();
                System.out.println("修改后的密码" + passwpord);
                break;
            }
            count ++;
            if (count == 3){
                System.out.println("已输入错三次,失败");
                break;
            }
        }
    }
    public double getVal() {
        return val;
    }
}

五、构造方法

5.1 构造方法的语法规则

5.2 举例

public class Note {
    public static void main(String[] args) {
        Person person = new Person();
        person.show();
        Person person1 = new Person("张三");
        person1.show();
        Person person2 = new Person("李四",18);
        person2.show();
    }
}
class Person {
    private String name;
    private int age;

    public Person(){
    	//name = null;age = 0
        System.out.println("这是无参构造方法");
    }
    public Person(String n){
    	//name = null;age = 0
        name = n;
        System.out.println("这是一个参数的有参构造");
    }
    public Person(String n,int num){
    	//name = null;age = 0
        name = n;
        age = num;
        System.out.println("这是两个参数的有参构造");
    }
    public void show(){
        System.out.println("name = " + name + ",age = " + age);
    }
}

六、this关键字

public class Note {
    public static void main(String[] args) {
        Person person = new Person("李四",18);
        person.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 show(){
        System.out.println("name = " + name + ",age = " + age);
    }
}
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 fun(){
        this.fun();
    }
    public void show(){
        System.out.println("name = " + name + ",age = " + age);
    }
}
class Person {
    private String name;
    private int age;
    public Person(){
        System.out.println("!!!!!");
    }
    public Person(String name){
        this();
    }
    public Person(String name,int age){
        this(name);
        this.age = age;
    }
}

七、匿名类

public class Note {
    public static void main(String[] args) {
        System.out.println(new Person("张三"));
    }
}
class Person {
    String name;
    public Person(String name){
        this.name = name;
    }
}
输出
Person@1b6d3586 //这是引用类型的地址

八、toString方法

public class Note {
    public static void main(String[] args) {
        System.out.println(new Person("张三"));
    }
}
class Person {
    String name;
    public Person(String name){
        this.name = name;
    }
    public String toString(){
        String ret = "name = " + this.name;
        return ret;
    }
}
举报

相关推荐

0 条评论