7:Java面向对象
第一章:类和对象
1.1:类和对象的概念及什么是面向对象:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。一切客观存在的事物都可以称为对象。类是对象的类型,确定对象将会拥有的属性和方法。我们描述对象的过程可以称之为面向对象。
1.2:类的定义:
所有的Java程序都以类class为组织单位,类由属性和方法组成。定义类的步骤:
-
- 定义类的名字
- 编写类的属性,可以定义一个或多个类的属性,也可以不定义。
- 编写类的方法,可以定义一个或多个类的方法,也可以不定义。
-
public class User { private String name; private String sex; private int age; public String getName() { System.out.println("获取任务的名称"); return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
1.3:Java中对象的使用:
- 创建对象:
- 即对象的实例化,如:User user = new User();-------------->类名 对象名 = new 类名();
- 使用对象:
- 引用对象的属性:对象名.属性,如:user.name = "张三";
- 引用对象的方法:对象名.方法名(),如:user.getName();
public class User { long telPhone; String name; public void getMessage(){ System.out.println("name:"+name+"telPhone:"+telPhone); } }
public class TestUser { public static void main(String[] args) { User user = new User(); user.getMessage(); user.name = "zhangsan"; user.telPhone=18801480283L; user.getMessage(); } }
name:nulltelPhone:0
name:zhangsantelPhone:18801480283
1.4:Java中的成员变量和局部变量:
- 成员变量:在类中定义,用来描述对象将要有什么。
- 局部变量:在类的方法中定义,在方法中临时保存数据。
- 区别:
- 作用域:局部变量的作用域仅限于定义它的方法。成员变量的作用域在整个类内部都可见。
- 初始值不同:Java中会给成员变量赋予初始值,但是不会给局部变量赋予初始值。
- 在同一个方法中不允许有同名的局部变量,在不同的方法中允许有同名的局部变量
- 两类变量同名时,局部变量优先级高。
1-5:Java中的构造方法:
- 构造方法的作用:定义在Java类中的一个用来初始化对象的方法。特点:名称与类名相同,无返回值。如:User user = new User();
- 构造方法的种类:无参构造方法和有参构造方法。
- 无参构造方法的语法:
public class User { public User(){ System.out.println("这是一个无参的构造方法"); } }
- 有参构造方法的语法:User user = new User();
public class User { int age; String name; public User(int age1,String name1){ age = age1; name = name1; System.out.println("这是一个有参的构造方法"); } }
public class TestUser { public static void main(String[] args) { User user = new User(12,"zhangsan"); } }
- 当没有指定构造方法时,系统会自动添加无参构造方法。当有指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不太的参数选择相应的方法。构造方法不但可以给属性赋值,还可以给属性赋予一个合理的值。
public class User { int age; String name; public User(){ System.out.println("这是一个无参的构造方法"); } public User(int age1,String name1){ if(age1 < 0){ System.out.println("你输入的年龄值有问题"); age1 = 0; }else{ age = age1; } name = name1; System.out.println("这是一个有参的构造方法"); } }
public class TestUser { public static void main(String[] args) { User user = new User(-2,"zhangsan"); } }
输出结果:你输入的年龄值有问题
这是一个有参的构造方法
- 无参构造方法的语法:
1.6:Java中的static使用之静态变量:
- 静态成员:Java中呗static修饰的成员,她属于整个类所有,而不是某个对象所以,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问。使用 static 可以修饰变量、方法和代码块。例如:
-
静态变量:使用 static 修饰的变量。public class HelloWorld { // 定义静态变量,保存班级名称 static String className = "JAVA开发一班"; public static void main(String[] args) { // 访问静态变量,输出班级名称 System.out.println(HelloWorld.className); //创建类的对象,使用对象名的形式访问金泰变量,输出班级名称 HelloWorld hello = new HelloWorld(); System.out.println(hello.className); //使用对象名的形式修改静态变量的值 hello.className = "开发二班"; System.out.println(hello.className); } }
-
public class HelloWorld { //定义变量 String name = "zhangsan"; // 定义静态变量score1 static int score1 = 86; // 定义静态变量score2 static int score2 = 92; // 定义静态方法sum,计算成绩总分,并返回总分 public static int sum() { return score1+score2; } //普通方法中,可以直接访问同类的非静态变量和静态变量 public void show(){ System.out.println("名字:" + name+"的成绩为:" + score2); } public static void main(String[] args) { // 调用静态方法sum并接收返回值 int allScore = HelloWorld.sum(); System.out.println("总分:" + allScore); //在静态方法中调用非静态变量 HelloWorld hello = new HelloWorld(); System.out.println("名字:" + hello.name); //在静态方法中调用非静态方法 hello.show(); } } PS: 1、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。 2、如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。 3、在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。 4、静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
-
1.7:Java中的static使用的静态初始化块
- 静态初始化块:Java 中可以通过初始化块进行数据赋值。使用 static 修饰初始化块,就称为静态初始化块。静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
public class HelloWorld { String name; // 声明变量name String sex; // 声明变量sex static int age;// 声明静态变量age // 构造方法 public HelloWorld() { System.out.println("通过构造方法初始化name"); name = "tom"; } // 初始化块 { System.out.println("通过初始化块初始化sex"); sex = "男"; } // 静态初始化块 static { System.out.println("通过静态初始化块初始化age"); age = 20; } public void show() { System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age); } public static void main(String[] args) { // 创建对象 HelloWorld hello = new HelloWorld(); // 调用对象的show方法 hello.show(); } }

更多精彩