Loading

面向对象-匿名对象-private关键字等


返回 我的技术栈(Technology Stack)



面向对象的三大特征(了解)


  • 封装(encapsulation)
  • 继承(inheritance)
  • 多态(polymorphism)

成员变量和局部变量的区别


  Class Person {
    String name ;                   //成员变量(name)   在堆内存(属于对象,对象进堆内存)  创建时存在,随对象的消失而消失        有默认初始值
    public void speak(int x) {      //局部变量(x,num)  在栈内存(属于方法,方法进栈内存)  调用时存在,随方法的调用结束而消失    没有默认初始值,必须定义,赋值后才能使用
        int num = 10;
    }
}

基本数据类型与引用数据类型


  • 基本数据类型变量:byte,short,int,long,float,double,boolean,char
  • 引用数据类型变量:数组,类,接口,枚举

匿名对象


  • 匿名对象:没有名字的对象

  • 应用场景:仅仅调用一次方法的时候(注意:多次调用的时候不合适)

  • 好处:可以节省代码。当作实际参数传递

  • 匿名对象是否可以调用属性并赋值?有什么意义?——————————可以调用属性,但是没有意义,因为调用后就变成了垃圾。所以如需要赋值还是用有名字的对象。

      class Demo {
      	public static void main(String[] args{
      	    Car c1 = new Car();   // 创建有名字的对象
      	    c1.run();
      	    c1.run();
      	
      	    new Car().run();     // 匿名对象调用方法
      	}
      }
    
      class Car {
          String color;
          int num;
              
          public void run() {
               System.out.println("车运行");
          }
      }
    
      /***************************************************************************/
      class Demo1 {
          public static void main(String[] args) {
              Car c1 = new Car();   //有名字的对象的调用
              method(c1);
    
              method(new Car());    //匿名对象可以当作参数传递
          }
          //抽取方法提高代码的复用性
          public static void method(Car cc) {
              cc.color = "red";
              cc.num = 8;
              cc.run();
          }
      }
      
      class Car {
          String color;
          int num;
    
          public void run() {
              System.out.println(color + "-----" + num);
          }
      }
    

private关键字的概述及特点


  • private关键字特点
    • 是一个权限修饰符

    • 可以修饰成员变量和成员方法

    • 被修饰的成员只能在本类中被访问

          class  Demo {
              public static void main(String[] args) {
                 Person p1 = new Person();
                 p1.setName ="张三";
                 p1.setAge(-17);
                 System.out.println(p1.getName() + "---------" + p1.getAge());
              }
          }
      
          class Person {
              private String name;
              private int age;
          
              public void setName(String name) {   //设置姓名
                   this.name = name;
              }
      
              public String getName() {     //获取姓名
                   return name;
              }
      
              public void setAge(int age) {      //设置年龄
                   if (age > 0 && age < 200) {
                       this.age = age;
                   }else {
                       System.out.println("输入错误!");
                   }
              }
      
              public int getAge() {      //获取年龄
                  return age;
              }
          }
      

posted @ 2021-03-27 23:13  言非  阅读(61)  评论(0编辑  收藏  举报