javaSE学习的week02

1 private关键字的应用

package cn.hncu_01;

/*

 * 现实世界的事物:

 * 属性

 * 行为

 *

 * 在程序中,要表示一个事物,我们用类

 * 成员变量(属性):姓名, 学号

 * 成员方法(行为):学习

 *

 *

 * 分析:按照我们现在的方法写代码,年龄可以赋值值为一个负数.但是这不符合现实的情况,怎么办?

 * 我们应该在给年龄赋值时,先判断一下年龄是否合理,如果合理,就赋值,否则要给出提示信息.

 * 但是,以上步骤需要一个方法来实现,所以,我们要写一个方法(成员方法).

 *

 * 写了设置年龄的方法后, 如果别人还是直接功过成员变量给age赋值,怎么办?

 * 这就是今天要学的,封装.

 *

 * 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

 * 通过是用private关键字实现.

 *

 * private关键字

 * 这个关键字可以修饰成员变量,也可以修饰成员方法.

 * 被private修饰的成员变量或成员方法,只能在本类中被访问.

 *

 * private 的应用:

 * 1.修饰成员变量,不让外界直接访问成员变量.

 * 2.对外界提供公共的方法访问成员变量.getXxx(),setXxx()

 */

class Student {

        //成员变量

        private String name;

        private int age;

        //成员方法

        private void study(){

                System.out.println("good good study, day day up!");

        }

        public void setAge(int i){

        //年龄合法

                if(0<=i&&i<=150){

                        age = i;

                }else{

                        System.out.println("年龄不合法");

                }

        }

}

//测试类

public class Demo {

        public static void main(String[] args) {

                //新建一个学生对象

                Student s = new Student();

        

                //访问成员变量

                //s.age =-1;

        

                s.setAge(100);

                //s.age =-1;

                //调用成员方法

                //s.study();

        }

}

package cn.hncu_02;

/*

 * 成员变量用private修饰,对外提供公共接口的学生类

 */

class Student {

        //成员变量

        private String name;

        private int age;

        //成员方法--一组getXxx()和setXxx()

        public void setName(String s){

                name = s;

        }

        public void setAge(int i){

                age = i;

        }

        public String getName() {

                return name;

        }

        public int getAge() {

                return age;

        }

        public void myPrintf(){

                System.out.println(name + "---" + age);

        }

}

public class Demo {

        public static void main(String[] args) {

                Student s = new Student();

                s.setName("张三");

                s.setAge(20);

        

                s.myPrintf();

        }

}

2. this关键字

package cn.hncu_02;

/*

 * 成员变量用private修饰,对外提供公共接口的学生类

 *

 * 我们说,程序中变量名要做到见名知意,所以String s , int i 这样的鸣鸣,不符合我们的规范,怎么办?

 * 这就是我们现在要学的:this关键字

 *

 * this关键字:代表本类的引用.

 * 哪个对象调用方法或成员变量,哪个对象就是this

 *

 * this关键的应用场景:

 * 解决局部变量隐藏成员变量的问题.

 *

 */

class Student {

        // 成员变量

        private String name;

        private int age;

        // 成员方法--一组getXxx()和setXxx()

        public void setName(String name) {

        //name = s;

        this.name = name;

        }

        public void setAge(int age) {

                //这就是局部变量隐藏成员变量的问题

                //左边的age应该是成员变量

                //右边的age应该是方法的参数传过来的,局部变量

                this.age = age;

        }

        public String getName() {

                return name;

        }

        public int getAge() {

                return age;

        }

        public void myPrintf() {

                System.out.println(name + "---" + age);

        }

}

public class Demo {

        public static void main(String[] args) {

                Student s = new Student();

                s.setName("张三");

                s.setAge(20);

        

                s.myPrintf();

                System.out.println(s.getName() + ":" + s.getAge());

        }

}

package cn.hncu_02;

/*

 * 再写手机类

 */

class Phone {

        private String brand;

        private double price;

        private String color;

        

        public void setBrand(String brand) {

                this.brand = brand;

        }

        public void setPrice(double price) {

                this.price = price;

        }

        public void setColor(String color) {

                this.color = color;

        }

        public String getBrand() {

                return brand;

        }

        public double getPrice() {

                return price;

        }

        public String getColor() {

                return color;

        }

}

public class Demo2 {

        public static void main(String[] args) {

                Phone p = new Phone();

                p.setBrand("华为mate30");

                p.setPrice(7200);

                p.setColor("土豪金");

                System.out.println(p.getBrand() + ":" + p.getPrice() + ":" + p.getColor());

        }

}

3.构造方法

package cn.hncu_03;

/*

 * 构造方法:

 * 1. 什么是构造方法

 * 构造方法用于初始化成员变量的.

 * 用于创建对象

 * 格式:

 * 方法名与类名相同.

 * 方法没有返回值,连void也没有

 *

 * 到目前为止,初始化成员变量的方法有几种?

 * (1) setXxx()

 * (2) 构造方法.

 *

 * 思考:

 * 在前面的例子中, 我们并没有写构造方法,那么建对象时,构造方法是从哪里来的?

 * 如果你自己没有提供构造方法,系统会给你添加一个默认的无参构造方法.为什么会这样?

 * java中任何类都继承自Object类,无参构造是继承自Object类的.

 *

 *

 * 注意:

 * 1. 构造方法可以重载

 * 2. 如果自己给出了带参构造方法,系统将不会提供无参构造.

 * 所以, 在写构造方法时,建议永远先写无参构造方法,再写带参构造方法.

 */

class Student {

        private String name;

        private int age;

        //无参构造

        Student(){

        }

        Student(String name ,int age){

                this.name = name;

                this.age = age;

        }

        public void myPrintf(){

                System.out.println(name + "--" + age);

        }

}

public class Demo {

        public static void main(String[] args) {

                Student s1 = new Student("班长", 20);

                s1.myPrintf();

                Student s2 = new Student();

                s2.myPrintf();

        }

}

4 标准类的写法

package cn.hncu_04;

/*

 * Java中标准类的写法:

 * 一个类由3个部分组成

 * 成员变量

 * 构造方法

 * 无参构造

 * 带参构造

 * 成员方法

 * getXxx()

 * setXxx()

 *

 * 需求: 写一个标准的学生类

 */

class Student {

        //成员变量

        private String name;

        private int age;

        //无参构造

        public Student() {

        }

        //带参构造

        public Student(String name, int age) {

                this.name = name;

                this.age = age;

        }

        public String getName() {

                return name;

        }

        public void setName(String name) {

                this.name = name;

        }

        public int getAge() {

                return age;

        }

        public void setAge(int age) {

                this.age = age;

        }

        public void myPrintf(){

                System.out.println(name + "--" + age);

        }

}

//标准测试类的写法

public class Demo {

        public static void main(String[] args) {

                //1.测试无参构造

                Student s1 = new Student();

                s1.setName("班长");

                s1.setAge(20);

                System.out.println(s1.getName() + "---" + s1.getAge());

                //2. 测试带参构造

                Student s2 = new Student("学委",19);

                s2.myPrintf();

        }

}

package cn.hncu_04;

/*

 * 重写手机类

 */

class Phone {

        //成员变量

        private String brand;

        private double price;

        private String color;

        //无参构造

        public Phone() {

        }

        //带参构造

        public Phone(String brand, double price, String color){

                this.brand = brand;

                this.price = price;

                this.color = color;

        }

        //get和set方法

        public void setBrand(String  brand){

                this.brand = brand;

        }

        public void setPrice(double  price){

                this.price = price;

        }

        public void setColor(String  color){

                this.color = color;

        }

        public String getBrand(){

                return brand;

        }

        public double getPrice(){

                return price;

        }

        public String getColor(){

                return color;

        }

}

public class Demo2 {

        public static void main(String[] args) {

                Phone p1 = new Phone();

                p1.setBrand("苹果");

                p1.setPrice(6999);

                p1.setColor("白色");

                System.out.println(p1.getBrand()+"---" + p1.getPrice()+"---" + p1.getColor());

                //-------------------------

                Phone p2 = new Phone("vivo",2999,"呕吐绿");

                System.out.println(p2.getBrand()+"---" + p2.getPrice()+"---" + p2.getColor());

        }

}

        

package cn.hncu_05;

/*

 * 定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试类Test,进行测试。

 */

class Demo {

        //成员变量

        private int x;

        private int y;

        //构造方法

        public Demo(){

        }

        public Demo(int x, int y){

                this.x = x;

                this.y =y;

        }

        //成员方法

        public void setX(int x){

                this.x = x;

        }

        public void setY(int y){

                this.y = y;

        }

        /*public int getX(){

                return x;

        }

        public int getY(){

                return y;

        }*/

        public int sum(){

                return x+y;

        }

}

public class Test {

        public static void main(String[] args) {

                Demo d1 = new Demo();

                d1.setX(10);

                d1.setY(20);

                System.out.println(d1.sum());

        }

}

package cn.hncu_06;

/*

 * 定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试类Test,进行测试。

 */

class Demo {

        public int sum(int x, int y){

                return x+y;

        }

}

public class Test {

        public static void main(String[] args) {

                Demo demo = new Demo();

                System.out.println(demo.sum(10, 20));

        

        }

}

package cn.hncu_07;

/*

 * 定义一个类MyMath,提供基本的加减乘除功能,然后进行测试。

 */

class MyMath {

        //加

        public int sum(int x, int y){

                return x+y;

        }

        //减

        public int sub(int x ,int y){

                return x-y;

        }

        //乘

        public  int mul(int x, int y ){

                return x*y;

        }

        //除

        public int div(int x, int y){

                return x/y;

        }

}

public class Demo {

        public static void main(String[] args) {

                MyMath mm = new MyMath();

                System.out.println(mm.sum(20, 10));

                System.out.println(mm.sub(20, 10));

                System.out.println(mm.mul(20, 10));

                System.out.println(mm.div(20, 10));

        }

}

练习:

  1. 定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试类Test,进行测试。
  2. 定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试了Test2,进行测试。
  3. 定义一个员工类,自己分析出几个成员,然后给出成员变量,构造方法,getXxx()/setXxx()方法,以及一个显示所有成员信息的方法。并测试。
  4. 定义一个类MyMath,提供基本的加减乘除功能,然后进行测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值