6、7-java学习- 面向对象-案例代码

6、7-java学习- 面向对象-案例代码

1.定义“人”类
public class Person {
    //成员变量:定义在类中
    String name = "张三";
    int age = 20;
    char sex = '男';

    //成员方法,你以前怎么 写方法,现在也怎么写,这次你可以把static
    public void eat() {
        System.out.println("吃饭");
    }

    public void sleep() {
        System.out.println("睡觉");
    }
}

public class MyTest {
    public static void main(String[] args) {
        Person person = new Person();
        //使用对象去调用类中属性
        String mz = person.name;
        int nl = person.age;
        char sex = person.sex;
        System.out.println(mz);
        System.out.println(nl);
        System.out.println(sex);

        //采用对象去调用类中的功能
        person.sleep();
        person.eat();
        System.out.println("===========================");
        //可以创建该类的很多对象
        Person p2 = new Person();
        p2.name="李四";
        p2.age=60;
        p2.sex='女';

        System.out.println(p2.name);
        System.out.println(p2.age);
        System.out.println(p2.sex);

        p2.sleep();
        p2.eat();
    }
}
2.定义手机类
public class Phone {  
    //定义一个Phone类
    String pingpai="小米";
    double price=2999;

    public void call(String name){
        System.out.println("给"+name+"打电话");
    }
    public void sendmsg(String name,String content){
        System.out.println("给" + name + "发短信:"+content);
    }
}
public class MyTest {
    public static void main(String[] args) {
        Phone phone = new Phone();
        phone.pingpai="华为";
        phone.price=4000;
        System.out.println(phone.pingpai);
        System.out.println(phone.price);
        phone.call("北冥有鱼");
        phone.sendmsg("其名为鲲");

        Phone p2 = new Phone();
        p2.pingpai="魅族";
        p2.price=3000;

        String pingpai = p2.pingpai;
        double price = p2.price;
        System.out.println(pingpai);
        System.out.println(price);

        p2.call("12345678");
        p2.sendmsg("23456789");
    }
}
3.定义学生类
public class Student {
    //成员变量
    String name="张三";
    int age;
    //成员功能
    public void eat(){
        System.out.println("吃饭");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
}
public class MyTest {
    public static void main(String[] args) {
        //类,一类事物封装,封装了属性功能  类Java是Java中的最小单位
        Student student = new Student();
        System.out.println(student);
        String name = student.name;
        int age = student.age;
        System.out.println(name);
        System.out.println(age);
        student.eat();
        student.sleep();
        
        System.out.println("==============================");
        Student student1 = new Student();
        System.out.println(student1);
        student1.name="李四";
        student1.age=24;
        System.out.println(student1.name);
        System.out.println(student1.age);
        student1.sleep();
        student1.eat();
    }
}

4.定义狗类
public class MyTest {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.show(20,50);
    }
}

class Dog{
    int num=100;
    public void show(int a,int b){
        //变量的访问原则:遵循就近原则,当局部变量和成员变量的名称相同了,访问时,遵循就近原则,先在局部范围找找到就使用
        //如果局部没有找到,就去成员范围找,找到就使用
        int num=2000;
        System.out.println(a);//20
        System.out.println(b);//50
        System.out.println(num);//100

    }
}
5.定义猫类
public class MyTest2 {
    public static void main(String[] args) {
        //以后看到一个方法的形参要一个类 类型,就传一个该类的对象
        Cat cat = new Cat();
        cat.num=250;
        int a = 150;
        cat.show(a);
        System.out.println(a); 
        Cat cat1 = new Cat();
        test(cat1,a);
        System.out.println("cat中的属性num:"+cat.num);
        System.out.println(cat1.num); 
    }
    public static void test(Cat aa,int num){
        aa.num=num;
    }
}

class Cat{
    int num=100;
    public void show(int a){
        a+=200;
        System.out.println("a:"+a);
    }
}
6. private 是一个权限修饰符,私有的,可以修饰成员变量,成员方法,被修饰的成员,只能在本类中访问,外界无法直接访问
public class Student {
    private String name;
    private int age;

    public void setAge(int nianling){
        if(nianling>=0&&nianling<=100){
            age = nianling;
        }else{
            System.out.println("年龄的数据不合理");
        }
    }

    public int getAge(){

        return age;
    }
    public void setName(String mz){
        name=mz;
    }
    public String getName(){
        return name;
    }
    public void show(){
        System.out.println(age);
        System.out.println(name);
    }
}
public class MyTest {
    public static void main(String[] args) {
        Student student = new Student();
        //可以通过间接的方式去设置值
        student.setName("张三");
        student.setAge(20);
        int age = student.getAge();
        String name = student.getName();
        System.out.println(name);
        System.out.println(age);
    }
}
7. set、get 方法
public class Person {
    //私有化成员变量
    private String name;
    private int age;
    //为了让外界能够设置或获取成员变量的值,还得提供公共的set get 方法
    public void setName(String mz){
        name=mz;
    }
    public String getName(){
        return name;
    }
    public void setAge(int nl){
        age=nl;
    }
    public int getAge(){
        return age;
    }
    //私有化方法,外界无法调用到
    private void show(){
        System.out.println(name);
        System.out.println(age);
    }
}
public class MyTest {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("王五");
        person.setAge(20);
        //获取和打印是两个概念
        String name = person.getName();
        int age = person.getAge();
        System.out.println(name);
        System.out.println(age);
    }
}
8.匿名对象:就是没有名字对象
public class MyTest {
    public static void main(String[] args) {
        AA aa = new AA();
        aa.show();
        aa.show();
        aa.show();

        new AA().show();
        new AA().show();
        new AA().show();
        //匿名对象:就是没有名字对象
        new AA();
        System.out.println(new AA().num);
        //当看到一个方法的形参要一个 类 类型 就传一个该类的对象

        test(aa);
        System.out.println(aa.num);
        //匿名对象作为参数可以传递
        test(new AA());
        System.out.println(aa.num);
    }
    public static void test(AA aaa){
        aaa.num=200;
    }
}

class AA {
    int num=20;
    public void show() {
        System.out.println("show");
    }
}
9. this :代表本类的一个引用,可以理解为本类的一个对象,那么哪个对象调用这个方法,这个方法中的this,就代表这个对象
public class Teacher {
    private String name;
    private int age;
    public void setName(String name){
        //当成员变量和局部变量重名了,用this就可以区分
        System.out.println("this 代表调用这个方法的对象"+this);
        this.name=name;
    }
    public String getName(){
        return this.name;
    }
    public void setAge(Teacher teacher,int age){
        System.out.println("this 代表调用这个方法的对象" + this);
        this.age=age;
    }
    public int getAge(){
        return this.age;
    }
}
public class MyTest2 {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        System.out.println("调用对象:"+teacher);
        teacher.setName("北冥有鱼");
        teacher.setAge(teacher,20);
        
        String name = teacher.getName();
        int age = teacher.getAge();
        
        System.out.println(name);
        System.out.println(age);
        
        
        System.out.println("===================");
        Teacher teacher2 = new Teacher();
        System.out.println("调用对象:" + teacher2);
        teacher2.setName("北冥有鱼2");
        teacher2.setAge(teacher2,22);
        
        String name2 = teacher2.getName();
        int age2 = teacher2.getAge();
        
        System.out.println(name2);
        System.out.println(age2);
    }
}
10.方法重载:方法可以重名,形参类型和个数不同
public class Student {
    public Student(){
        System.out.println("空参构造执行了");
    }
    //方法重载
    public Student(String name){
        System.out.println("一个参数的构造方法执行了"+name);
    }

    public Student(String name,int age) {
        System.out.println("两个参数的构造方法执行了"+name+"==="+age);
    }
}

public class MyTest {
    public static void main(String[] args) {
        //借助空参构造创建对象
        Student student = new Student();

        //借助有参构造来创建对象
        Student student1 = new Student("abc");
        Student student2 = new Student("aaa", 20);
    }
}
发布了13 篇原创文章 · 获赞 3 · 访问量 266

猜你喜欢

转载自blog.csdn.net/weixin_42401546/article/details/104304457