补充——面向对象、类、对象、属性、方法、变量

1、对象泛指一切事物,每种事物都具备自己的属性和行为。
2、面向过程思想:强调是通过调用对象的行为来实现功能。
3、面向过程:强调步骤
面向对象:强调对象
4、特点:将复杂的事情简单化,并将我们从执行者变成指挥者。

5、面向对象语言的三大基本特征:封装、继承、多态

类:一组相关属性和行为的集合
属性:该事物的状态信息
行为:该事物能够做什么

eg: 猫

属性:名字、体重、年龄、颜色
行为:走、跑、叫

对象:一类事物的具体表现,对象是类的实例,必然具备该事务的属性和行为。
现实中,一类事物的一个实例:一只小猫

eg:一只小猫

属性:汤姆、3kg、3年、黄色     行为:溜墙根走、蹦跶的跑、喵喵叫

6、类与对象的关系:

类是对一类事物的描述,是抽象的
对象是一类事物的实例,是具体的
类是对象的模板,对象是类的实体

7、事物与类的对比:

属性:事物的状态信息
行为:事物能够做什么
成员变量:对应事物的属性
成员方法:对应事物的行为

类的定义格式:
public class ClassName {
  //成员变量
  //成员方法
}

定义类:定义类的成员,包括成员变量和成员方法。
成员变量:在类中,方法外
成员方法:把static去掉

public class Student {
   //成员变量  
   String name;//姓名  
    int age;//年龄

    //成员方法
    //学习的方法
    publicvoid study() {
    System.out.println("好好学习,天天向上");
  }
  //吃饭的方法
  publicvoid eat() {
    System.out.println("学习饿了要吃饭");
  }
}

8、对象的使用

对象的使用格式
	类名 对象名 = new 类名();
	
使用对象访问类中的成员
	对象名.成员变量;
	对象名.成员方法();
	
public class Test01_Student {
  public static void main(String[] args) {
    //创建对象格式:类名 对象名 = new 类名();
    Student s = new Student();
    System.out.println("s:"+s); //cn.itcast.Student@100363

    //直接输出成员变量值
    System.out.println("姓名:"+s.name); //null
    System.out.println("年龄:"+s.age); //0
    System.out.println("‐‐‐‐‐‐‐‐‐‐");

    //给成员变量赋值
    s.name = "赵丽颖";
    s.age = 18;

    //再次输出成员变量的值
    System.out.println("姓名:"+s.name); //赵丽颖
    System.out.println("年龄:"+s.age); //18
    System.out.println("‐‐‐‐‐‐‐‐‐‐");

    //调用成员方法
    s.study(); // "好好学习,天天向上"
    s.eat(); // "学习饿了要吃饭"
  }
}

类与对象的练习:

定义手机类:

public class Phone {

     // 成员变量
     String brand; //品牌
    int price; //价格
    String color; //颜色

  // 成员方法

     //打电话
     public void call(String name) {
    System.out.println("给"+name+"打电话");
     }

    //发短信
     public void sendMessage() {
     System.out.println("群发短信");
    }
     }
 
   定义测试类:
     public class Test02Phone {
    public static void main(String[] args) {

      //创建对象
      Phone p = new Phone();

     //输出成员变量值
     System.out.println("品牌:"+p.brand);//null
     System.out.println("价格:"+p.price);//0
     System.out.println("颜色:"+p.color);//null
     System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");

    //给成员变量赋值
    p.brand = "锤子";
    p.price = 2999;
    p.color = "棕色";

    //再次输出成员变量值
    System.out.println("品牌:"+p.brand);//锤子
    System.out.println("价格:"+p.price);//2999
    System.out.println("颜色:"+p.color);//棕色
    System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");
    
    //调用成员方法
    p.call("紫霞");
    p.sendMessage();
  }
}

两个对象,调用同一个方法内存图

9、匿名对象:创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。

匿名对象 :没有变量名的对象
  格式:
new 类名(参数列表)
 eg:
new Scanner(System.in);

应用场景:
1. 创建匿名对象直接调用方法,没有变量名。
new Scanner(System.in).nextInt();

2、一旦调用两次方法,就是创建了两个对象,造成浪费,请看如下代码。
	 new Scanner(System.in).nextInt();
	 new Scanner(System.in).nextInt();
           一个匿名对象,只能使用一次
3、匿名对象可以作为方法的参数和返回值
	作为参数:
	class Test {
	    public static void main(String[] args) {
	      // 普通方式   
	        Scanner sc = new Scanner(System.in); 
	        input(sc);
	     
	        //匿名对象作为方法接收的参数
	        input(new Scanner(System.in));
	    }
	 
	  public static void input(Scanner sc){   
	     System.out.println(sc);    
	   }  
	}
	
	作为返回值:
	class Test2 {
	    public static void main(String[] args) {  
	      // 普通方式   
	        Scanner sc = getScanner();
	    }
	   
	   public static Scanner getScanner(){  
	        //普通方式
	        //Scanner sc = new Scanner(System.in); 
	        //return sc;
	     
	        //匿名对象作为方法返回值
	        return new Scanner(System.in);
	  }    
	}
	
	
	
	A a = new B();
		成员方法 A
	成员方法父类,其他方法是子类
	成员变量看父类,
	成员方法看子类
	静态方法看父类,
	
	
	外部类访问内部类 创建对象
	内部类访问外不类  直接访问
posted @ 2020-05-27 11:38  诸葛孔萌  阅读(139)  评论(0编辑  收藏  举报