Java面向对象编程-创新互联

1、什么是面向对象编程?
面向就是拿或找的意思
对象就是东西的意思
面向对象编程就是拿或找东西来编程

2、在Java中必须先创建类,才能获得对象
类:是对象共同特征的描述(设计图)
对象:是真实存在的实例

3、如何定义类?
public class 类名{
    ①成员变量(代表属性,一般是名词)
    ②成员方法(代表行为,一般是动词)
    ③构造块
    ④代码块
    ⑤内部块
}
例:
public class Car{
    //属性(成员变量)
    String name;
    double price;
    //行为(方法)
    public void start(){
    }
    public void run(){
    }
}

4、如何得到类的对象?
类名 对象名 = new 类名();
Car c = new Car();

5、使用对象
对象名.成员变量;
对象名.成员方法(...);

创建类

创新互联是一家集网站建设,酒泉企业网站建设,酒泉品牌网站建设,网站定制,酒泉网站建设报价,网络营销,网络优化,酒泉网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
//创建类
public class Car {
    //属性(成员变量)
    String name;
    double price;

    //行为(方法)
    public void start(){
        System.out.println(name+"开始启动!");
    }

    public void run(){
        System.out.println(name+ "跑起来!");
    }
}

使用自己设计的类

//使用自己设计的类
public class Test {
    public static void main(String[] args) {
        //类名 对象名 = new 类名();
        Car c = new Car();

        //使用对象
        //对象名.成员变量;
        //对象名.成员方法;
        c.name = "奔驰";
        c.price = 55.3;

        System.out.println(c.name+"的价格是:"+c.price);
        c.start();
        c.run();

        System.out.println("--------------------");
        Car c1 = new Car();
        c1.name = "比亚迪";
        c1.price = 29.8;

        System.out.println(c1.name+"的价格是:"+c1.price);
        c1.start();
        c1.run();
    }
}
6、定义类有哪些建议,有什么需要注意的?
    1、类名首字母建议大写、英文、有意义、满足驼峰模式、不能用关键字,满足标志符规定;
    2、一个代码文件中可以定义多个类,但是只能有一个类是publi修饰的,
    public修饰的类名必须是Java代码的文件名称;

7、成员变量的格式是什么样的,有什么特点?
    1、成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;
    2、一般无需指定初始化值,存在默认值

对象内存图

1、对象放在哪个位置?
    堆内存中

2、Car c = new Car(); c变量名中存储的是什么?
    存储的是对象在堆内存中的地址

3、成员变量(name、price)的数据放在哪里,存在哪个位置?
    放在对象中,存于堆内存中

两个变量指向同一对象

//创建类
public class Student {
    //属性(成员变量)
    String name;
    char sex;
    String hobby;

    //行为(方法)
    public void student() {
        System.out.println("名字:" + name + ",性别:" + sex + ",爱好:" + hobby + "的学生开始学习了!");
    }
}
//了解两个变量指向同一对象内存
public class Test {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.name = "阿珍";
        s1.sex = '女';
        s1.hobby = "唱歌、跳舞";
        s1.student();

        System.out.println("-----------------");
        //将s1的变量数据值给s2
        Student s2 = s1;
        s2.hobby = "刷题";

        System.out.println(s1.hobby);//刷题
        System.out.println(s2.name);//阿珍
        System.out.println(s2.sex);//女
        s2.student();
        System.out.println("------------两个变量的地址-------------");
        //s1、s2两个变量的地址指向同一地址
        System.out.println(s1);
        System.out.println(s2);
    }
}
什么是垃圾回收?
    1、注意:当堆内存中的类对象或数组对象,没有被任何变量引用(指向)时,
    就会被判定为内存中的“垃圾”。
    2、java存在自动垃圾回收器,会定期进行清理
构造器
1、学构造器的目的?
    真正知道对象具体是通过调用什么代码完成的
    能够掌握为对象属性赋值的其他写法
2、构造器的作用?
    用于初始化一个类的对象,并返回对象的地址
3、构造器定义的格式
    修饰符 类名(形参列表){
    ...
    }
4、构造器的分类
    1、无参数构造器(默认存在的):初始化对象时,成员变量的数据均采用默认值
    2、有参数构造器:在初始化对象的时候,同时可以为对象进行赋值
    public class Car{
        ...
        //无参构造器
        publicc Car(){
        ...
        }
        //有参构造器
        publicc Car(String name,String price){
        ...
        }
    }
5、注意事项
    1、任何类定义出来,默认就自带了无参数构造器,写不写都有
    2、一旦定义了有参数构造器,默认的无参数构造器就没有了,
    此时需要自己写一个无参数构造器
//构造类
public class Car {
    String name;
    double price;

    //无参数构造器
    public Car() {
        System.out.println("无参数构造器被调用~~~");
    }
    //有参数构造器
    public Car(String n, double p) {
        System.out.println("有参数构造器被调用~~~");
        name = n;
        price = p;
    }
}
//引用构造器

public class Test {
    public static void main(String[] args) {
        Car c1 = new Car();
        System.out.println(c1.name);//null
        System.out.println(c1.price);//0

        Car c2 = new Car("宝马", 50.9);
        System.out.println(c2.name);
        System.out.println(c2.price);
    }
}

this关键字的作用
出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象成员的变量、成员方法
public class Car {
    String name;
    double price;

    //this关键词当前对象的地址,在成员变量中的使用
    public Car(String name, double price) {
        name = name;//null
        price = price;//0
        this.name = name;
        this.price = price;
    }

    //在成员方法中的使用
    public void goWith(String name) {
        //宝马正在和宝马比赛!
        System.out.println(name + "正在和" + name + "比赛!");
        //奔驰正在和宝马比赛!
        System.out.println(this.name + "正在和" + name + "比赛!");
    }
}
public class Test {
    public static void main(String[] args) {
        Car c = new Car("奔驰", 50.9);
        System.out.println(c.name);
        System.out.println(c.price);
        c.goWith("宝马");
    }
}
封装
    面向对象的三大特征:封装、继承、多态
什么是封装?
    隐藏实现细节,暴露出合适的访问方式(合理隐藏、合理暴露)
封装的实现步骤
    1、一般对成员变量使用priva(私有)关键字修饰进行隐藏,
    private修饰后该成员变量就只能在当前类中访问
    2、提供public修饰的公开的getter、setter方法暴露其取值和赋值
封装的好处
    1、加强了程序代码的安全性
    2、适当的封装可以提升开发效率,同时可以让程序更容易理解与维护
public class Student {
    private int age;

    //赋值方法
    public void setAge(int age) {
        if (age >= 0 && age<= 200) {
            this.age = age;
        } else {
            System.out.println("年龄非法!");
        }
    }

    //取值方法
    public int getAge() {
        return age;
    }
}
public class Test {
    public static void main(String[] args) {
        Student s = new Student();
        s.setAge(20);
        System.out.println(s.getAge());
    }
}
JavaBean
    可以理解成实体类,其对象可以用于在程序中封装数据
需要满足的要求
    成员变量使用private修饰
    提供每一个成员变量对应的setXxx()/getXxx()
    必须提供一个无参构造器
public class User {
    //1、成员变量私有
    private String name;
    private double height;
    private double salary;

    //3、必须有无参数构造器(不定义也行,有默认的,前提是没有有参构造器)
    public User() {
    }

    //4、有参数构造器(不是必须的,可以选择)
    public User(String name, double height, double salary) {
        this.name = name;
        this.height = height;
        this.salary = salary;
    }

    //2、必须提供成套的getter()和setter()方法暴露成员变量

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}
public class Test {
    public static void main(String[] args) {
        //1、调用无参数构造器创建对象
        User u = new User();
        u.setName("吴彦祖");
        u.setHeight(180);
        u.setSalary(5000);
        System.out.println(u.getName());//吴彦祖
        System.out.println(u.getHeight());//180
        System.out.println(u.getSalary());//5000

        //2、调用有参数构造器创建对象
        User u1 = new User("关之琳", 168, 6000);
        System.out.println(u1.getName());//关之琳
        System.out.println(u1.getHeight());//168
        System.out.println(u1.getSalary());//6000
    }
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:Java面向对象编程-创新互联
分享地址:http://csdahua.cn/article/dcpphs.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流