java-05 面向对象

class StudentDemo {
    String name;
    int age;
    String address;
    
    public void study(){
        System.out.println("学生爱学习");
    }
    public void eat(){
        System.out.println("吃饭");
    }
    public void add(){
        System.out.println(address);
    }

}

class Student {
    
    public static void main(String[] args) {
        StudentDemo student = new StudentDemo();
        student.address = "厦门";
        student.eat();
        student.add();
        
    
    }
    
}

####################方法的形势参数调用################

/*
    形式参数的问题:
        基本类型:形式参数的改变不影响实际参数
        引用类型:形式参数的改变直接影响实际参数
*/
//形式参数是基本类型
class Demo {
    public int sum(int a,int b) {
        return a + b;
    }
}

//形式参数是引用类型
class Student {
    public void show() {
        System.out.println("我爱学习");
    }
}

class StudentDemo {
    //如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。
    public void method(Student s) { //调用的时候,把main方法中的s的地址传递到了这里 Student s = new Student();
        s.show();
    }
}

class ArgsTest {
    public static void main(String[] args) {
        //形式参数是基本类型的调用
        Demo d = new Demo();
        int result = d.sum(10,20);
        System.out.println("result:"+result);
        System.out.println("--------------");
        
        //形式参数是引用类型的调用
        //需求:我要调用StudentDemo类中的method()方法
        StudentDemo sd = new StudentDemo();
        //创建学生对象
        Student s = new Student();
        sd.method(s); //把s的地址给到了这里
    }
}

#############匿名对象###################

/*
 * 匿名对象就是没有名字的对象
   //匿名对象的使用场景:
    1.调用方法,仅仅只调用一次的时候
 */
public class NoName {
    public static void main(String[] args) {
        Dtudent s = new Dtudent();
        s.show();
        System.out.println(s);
        s.show();
        System.out.println(s);
        
        //new Dtudent().show();
        System.out.println(new Dtudent());
        //new Dtudent().show();
        System.out.println(new Dtudent());
        
    }
}

class Dtudent{
    public void show(){
        System.out.println("i love study!!!");
    }
}

结果:

i love study!!!
Dtudent@6d06d69c
i love study!!!
Dtudent@6d06d69c
Dtudent@7852e922
Dtudent@4e25154f

 

################封装############3

/*
    private:
        是一个权限修饰符
        可以修饰成员变量和成员方法
        被其修饰的成员只能在本类中被访问
*/
class Demo {
    //int num = 10;
    //用private修饰
    private int num = 10;
    
    public void show() {
        System.out.println(num);
    }
    
    private void method() {
        System.out.println("method");
    }
    
    public void function() {
        method();
    }
}

class PrivateDemo {
    public static void main(String[] args) {
        Demo d = new Demo();
        //不能方法私有的成员变量
        //System.out.println(d.num);
        d.show();
        //不能访问私有的成员方法
        //d.method();
        d.function();
    }
}

/*
    封装和private的应用:
        A:把成员变量用private修饰
        B:提高对应的getXxx()和setXxx()方法
*/
//定义学生类
class Student {
    //姓名
    private String name;
    //年龄
    private int age;
    
    //姓名获取值
    public String getName() {
        return name;
    }
    
    //姓名设置值
    public void setName(String n) {
        name = n;
    }
    
    //年龄获取值
    public int getAge() {
        return age;
    }
    
    //年龄赋值
    public void setAge(int a) {
        age = a;
    }
}

//测试类
class StudentTest {
    public static void main(String[] args) {
        //创建学生对象
        Student s = new Student();
        
        //使用成员变量
        //错误:被私有修饰了,外界不能直接访问了
        //System.out.println(s.name+"---"+s.age);
        System.out.println(s.getName()+"---"+s.getAge());
        
        //给成员变量赋值
        //s.name = "林青霞";
        //s.age = 27;
        //通过方法给赋值
        s.setName("林青霞");
        s.setAge(27);
        System.out.println(s.getName()+"---"+s.getAge());
    }
}

#################构造方法###################

原文地址:https://www.cnblogs.com/shanhua-fu/p/8776772.html