JAVA小白的学习记录.4 您所在的位置:网站首页 java打印char JAVA小白的学习记录.4

JAVA小白的学习记录.4

2023-03-13 10:31| 来源: 网络整理| 查看: 265

本次是记录第八天和第九天的学习内容,主要是学习了类和对象的创建,以及类中的无参构造方法和有参构造方法,并学习了java封装中对属性的封装,总结如下

1.day08

类和对象

1.1声明一个类的语法格式public class 类名{ 数据类型 变量1;//特征 数据类型 变量2; ..... piblic void 类名(){//暂时不带static 语句体1;//行为 语句体2; ...... } } package com.qf.test; ​ /** * * @author bowang * 人类: * 特征:Java使用变量 以后我叫属性 * 名字 * 年龄 * 身高 * * * 行为: Java中使用方法来表示 * 吃饭 * 睡觉 */ public class Person { //特征: //类中的变量不要赋值 String name;//默认的值 null int age;//默认值是0 double height;//默认值是0.0 //行为: //Java中的方法来表示 //在类中暂时不要加static public void eat () { System.out.println("能吃饭"); } public void sleep () { System.out.println("站着睡"); } //以上就是声明好的一个类 ​ } ​

练习:

狗类:

属性: 名字 毛色 性别

行为: 打架 看家

package com.qf.test; ​ public class Dog { ​ //特征: String name; String color; char sex;//性别 //行为: public void fight () { System.out.println("狗打架"); } public void lookHome () { System.out.println("狗看家"); } } ​

1.2创建一个对象

语法格式

注意:1.先有类才能有对象

2.对象的创建必须在main主函数中

public static void main(String[] args){ 已经声明的类名 对象名 = new 已经声明的类名(); } package com.qf.test; ​ public class Demo1 { public static void main(String[] args) { Dog dog1 = new Dog(); dog1.name = "大黄"; dog1.color = "黄色"; dog1.sex = '母'; System.out.println("dog1的名字:"+dog1.name); System.out.println("dog1的颜色:"+dog1.color); System.out.println("dog1的性别:"+dog1.sex); dog1.fight(); dog1.housekeeping(); } }1.3类可和对象放在同一个文件里

案例:

package com.qf.test; ​ ​ //当一个文件中有两个类的时候 ,只能有一个public 来修饰类 //The public type Pig must be defined in its own file class Pig { String name;//名字属性 double price;//猪肉的价格 String color;//猪肉的颜色 //行为 public void upTree() { System.out.println("猪能上树"); } } ​ ​ ​ public class Demo3 { public static void main(String[] args) { //创建对象 Pig pig1 = new Pig(); pig1.name = "佩琪"; pig1.price = 18.9; pig1.color = "pink"; System.out.println("pig1的名字:" + pig1.name); System.out.println("pig1的价格:" + pig1.price); System.out.println("pig1的颜色:" + pig1.color); pig1.upTree(); } } ​1.4构造方法

无参构造方法和有参构造方法两种。

1.4.1无参构造方法

语法格式

public 类名(){ 语句体 }

案例如下

package com.qf.test; ​ class People { //属性 String name; int age; //定义一个无参构造方法 public People () { System.out.println("嘻嘻"); //this 当前对象 name = "狗蛋"; age = 12; } } ​ public class Demo4 { public static void main(String[] args) { //依靠构造方法去创建 对象 People people = new People(); people.name = "二狗"; people.age = 22; System.out.println(people.name);// System.out.println(people.age);// People people2 = new People(); } }1.4.2有参构造方法

语法格式

public 类名 (数据类型 值1,数据类型 值2,......){ 语句体 } package com.qf.test; ​ class Cat { String name; int age; char sex; //一旦在类中写了有参构造方法,默认无参构造方法就不在了 //有参构造方法 是特殊的方法 public Cat (String name, int age, char sex) { //this 代表是当前对象 //this.name 当前对象的name属性 this.name = name; this.age = age; this.sex = sex; } } public class Demo6 { public static void main(String[] args) { //创建对象和构造方法有关系, new Cat(); 依靠类中无参构造方法 Cat cat = new Cat("二虎", 1, '公'); cat.name = "二牛"; cat.age = 12; cat.sex = '母'; System.out.println(cat.name);// System.out.println(cat.age);// System.out.println(cat.sex);// } } ​2.day092.1对象的内存分析

主要记以下三个

名称存储内容方法区字节码文件 class文件堆区域对象和数组的数据,和new有关的都存在堆区域栈八大基本数据类型的数据和对象的地址

2.2构造代码块【开发不用】

语法格式

{ 语句体 }2.3成员变量和局部变量2.3.1成员变量

即类中的属性、特征中的变量就是成员变量

2.3.2局部变量

例如for循环中的变量,只能用在本循环内,无法用在其他地方。

2.3.3两者区别

1.局部变量无初始值,成员变量有初始值

2.4封装【重点】

现在咱们对属性进行封装:

1.为每个属性加上一个修饰符 private (私有的)

2.在实体类中,书写相对应的set方法和get方法 进行操作

语法格式

private 数据类型 变量; public void set变量(){//给变量赋值 语句体 } public 数据类型 get变量(){//取值 语句体 }

案例如下

package com.qf.test; ​ ​ class People { //对象属性进行封装 加private关键字 private String name; private int age; //借助于set(设置)方法对属性进行赋值 //有一定规则的: set方法 (设置值的时候) 没有返回值的 void //setName 为啥叫?setName set+ 变量的名字 作为咱们方法的名字 采用小驼峰的命名规则 public void setName (String name) {//此时 name = "黑蛋儿" this.name = name;// this.name = "黑蛋儿"; } //借助于get(得到)方法对属性进行取值 得有返回值的 public String getName () { return this.name; } public void setAge (int age) { this.age = age; } public int getAge () { return age; } } public class Demo5 { public static void main(String[] args) { People people = new People(); //结果发现报错了 私有的变量只能在本类中使用,出了这个类无法使用 咋办? people.setName("黑蛋儿");//会赋值给 第12行的方法的形参name //以上代码已经将"黑蛋儿" 赋值给对象的name people.setAge(18); //取值 System.out.println("people的名字为:"+people.getName()); System.out.println("people的年龄为:"+people.getAge()); } } ​

案例:

一个类中要对属性进行封装

要求有有参构造方法

要求有set和get方法

对属性进行赋值 和取值

想一个问题: 有参构造方法是对属性进行赋值的,但是set方法也是赋值的 用哪个?想用谁用谁

package com.qf.test; ​ class BeautifulGirl { //成员变量 用来存储数据 private String name;//姓名 private int age;//年龄 private double weight;//体重 private double height;//身高 private String color;//肤色 //无参构造 创建对象的时候 可以借助于无参构造方法 public BeautifulGirl() { } //有参构造 建对象的时候 可以借助于有参构造方法 对属性(成员变量)进行赋值 public BeautifulGirl(String name, int age, double weight, double height, String color) { this.name = name; this.age = age; this.weight = weight; this.height = height; this.color = color; } //get方法 对变量进行取值 public String getName() { return name; } //set方法 对变量进行赋值的 public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } } public class Demo8 { public static void main(String[] args) { //要么使用有参的进行赋值 BeautifulGirl bg = new BeautifulGirl("刘亦菲", 28, 280, 280, "yellow"); //要么使用set方法进行赋值 bg.setName("蔡徐坤"); System.out.println(bg.getName());//取值 } } ​

练习:

声明一个产品

属性: 产品名字 产品 价格 产品图片 产品类别 产品促销价

要求 私有话成员变量 提供一个无参构造 提供一个有参构造

使用有参构造方法进行赋值,然后通过get方法取值所有 要求打印在一行

不能使用快捷键

package com.qf.test; ​ class Product{ private String name; private double price; private String picture; private String category; private double promotional_price; public Product() { } public Product(String name,double price, String picture,String category,double promotional_price) { this.name = name; this.price = price; this.picture = picture; this.category = category; this.promotional_price = promotional_price; } public void setName() { } public String getName() { // return this.name; return name; } public void setPrice() { } public double getPrice() { // return this.price; return price; } public String getPicture() { return picture; } public void setPicture(String picture) { this.picture = picture; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public double getPromotional_price() { return promotional_price; } public void setPromotional_price(double promotional_price) { this.promotional_price = promotional_price; } } public class Phone { public static void main(String[] args) { Product product = new Product("手机",100.2,"照片","华为",99); System.out.println(product.getName()+product.getPrice()+product.getPicture()+product.getCategory()+product.getPromotional_price()); } } ​



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有