这里写目录标题
一.面向过程与面向对象
- 程序猿从面向过程的执行者转换成了面向对象的指挥者
二.类和对象的创建和使用
-
类的定义
-
修饰符 关键字 类名{ 属性与字段; 方法(); } //例如:我们创建一个Person类 class Person{ //人的特征 public String name;//姓名 public String sex;//性别 public int age; //人的行为 public void eat(){ System.out.println("干饭"); } public void Learn(){ System.out.println("学习"); } public void sleep(){ System.out.println("睡觉"); } } /* 0.类的命名要采用大驼峰方式来命名 1.这里我们使用关键字class定义一个名为Person的类。 2.这个类拥有人的一些基本特征姓名,性别,年龄。 3.这个类拥有人的一些基本行为,吃饭,学习,睡觉。 4.修饰符 public只能用来定义与文件名相同的类(不然会报错),比如你的文件名是Person.java才能用public class Person这样来定义 */
-
-
对象的创建和使用
-
class Person{ //人的特征 public String name;//姓名 public String sex;//性别 public int age; //人的行为 public void eat(){ System.out.println("干饭"); } public void Learn(){ System.out.println("学习"); } public void sleep(){ System.out.println("睡觉"); } } public class test { public static void main(String[] args) { Person person=new Person(); System.out.println(person.name);//null System.out.println(person.sex);//null System.out.println(person.age);//0 person.eat();//干饭 person.Learn();//学习 person.sleep();//睡觉 } } /* 1.通过new来实例化一个对象 2.通过person.来调用类的成员 */
-
四.类的成员之一属性
-
语法格式
-
修饰符 数据类型 属性名=初始化值; 修饰符 1.常用的修饰符有:public protected default private 2.其它修饰符:static、final 数据类型 基本的数据类型+引用类型 属性名 属于标识符,符合命名规则和规范
-
-
例
-
public class Person{ private int age=21; private String name="Wei"; }
-
-
java中变量的分类
-
一.成员变量与局部变量区分 1.在方法体外,类体内声明的变量称为成员变量 2.在方法体内部声明的变量称为局部变量 二. 1.成员变量:分为实例变量(不以static修饰)类变量(以static修饰)两种 2.局部变量:形参、方法局部变量、代码块局部变量三种
-
在这里插入代码片
-
五.类的成员之二方法
-
方法的定义
-
修饰符 数据类型 方法名(){ 代码内容; } class Person{ //人的特征 public String name;//姓名 public String sex;//性别 public int age; //人的行为 public void eat(){ System.out.println("干饭"); } public void Learn(){ System.out.println("学习"); } public void sleep(){ System.out.println("睡觉"); } } //方法是这个类的一个行为
-
六.类的成员之二构造器
-
构造器是一种java的一种特殊的方法,用来初始化成员变量;
-
语法规则
- 1.方法名称必须与类名称相同。
- 2.构造方法没有返回值类型声明。
- 3.每一个类中一定至少存在一个构造方法(没有明确定义,则系统自动生成一个无参构造) 。
-
无参构造器:系统会自动生成,如果自己定义了一个有参构造器,又想调用无参构造器时,这个时候需要自己在重新写一个无参构造器,避免程序报错。
-
有参构造器
-
class Person{ public String name;//姓名 public String sex;//性别 public int age; public Person(String name,String sex,int age){ this.name=name; this.sex=sex; this.age=age; } public Person(String name,String sex){ this.name=name; this.sex=sex; } public Person(String name){ this.name=name; } public Person(){ } } public class test { public static void main(String[] args) { Person person1=new Person();//用无参构造器来实例化对象 System.out.println(person1.age);//0 System.out.println(person1.name);//null System.out.println(person1.sex);//null //调用有参构造器来实例化对象 Person person2=new Person("Wei","男",18); System.out.println(person2.age);//18 System.out.println(person2.name);//Wei System.out.println(person2.sex);//男 } } //构造器的参数可以根据自己想要的参数来调整
-
this关键字
-
this表示当前对象引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法
-
this的3种常用方法 1.this.name=name;//用this来减少程序歧义 2.this.方法(); 3.this("bit", 12, "man");//this调用构造函数 class Person { private String name;//实例成员变量 private int age; private String sex; //默认构造函数 构造对象 public Person() { //this调用构造函数 this("bit", 12, "man");//必须放在第一行进行显示 } //这两个构造函数之间的关系为重载。 public Person(String name,int age,String sex) { this.name = name; this.age = age; this.sex = sex; } public void show() { System.out.println("name: "+name+" age: "+age+" sex: "+sex); } } public class Main{ public static void main(String[] args) { Person person = new Person();//调用不带参数的构造函数 person.show(); }
-
七.类的三大特性之一封装
-
封装、继承、多态是类的重要三大特性,也是学习类最重要的知识点。
-
封装
- 定义
- 利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。
- 优点
- 减少耦合: 可以独立地开发、测试、优化、使用、理解和修改
- 减轻维护的负担: 可以更容易被程序员理解,并且在调试的时候可以不影响其他模块
- 有效地调节性能: 可以通过剖析确定哪些模块影响了系统的性能
- 提高软件的可重用性
- 降低了构建大型系统的风险: 即使整个系统不可用,但是这些独立的模块却有可能是可用的
- 定义
-
例
-
class Person{ private String name;//姓名 private String sex;//性别 private int age; private String getName() { return name; } private String getSex() { return sex; } private int getAge() { return age; } public void print(){ System.out.println("大元帅"+getName()+" 今年"+getAge()+" 性别"+getSex()+" 单身哈哈"); } public Person(String name, String sex, int age){ this.name=name; this.sex=sex; this.age=age; } public static void main(String[] args) { Person person=new Person("逆天而行","男",18); person.print();//大元帅逆天而行 今年18 性别男 单身哈哈 } //Person 类封装 name、sex、age 等属性,外界只能调用 print()方法,无法直接获取 name 属性和 sex 属性。
-
例2
-
class Person{ private String name;//姓名 private String sex;//性别 private int age; public String getName() { 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; } } public static void main(String[] args) { Person person=new Person(); person.setAge(19); person.setName("Wei"); person.setSex("男"); System.out.println(person.getAge());//19 System.out.println(person.getName());//Wei System.out.println(person.getSex());//男 } //程序可以通过get,set来操作属性
-
八.关键字
-
static
-
静态变量: 又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它;静态变量在内存中只存在一份。
-
实例变量: 每创建一个实例就会产生一个实例变量,它与该实例同生共死。
-
例
-
class Persons { private int x; // 实例变量 private static int y; // 静态变量 public static void main(String[] args) { Persons person = new Persons(); int x = person.x; int y = Persons.y; } } 1.用static修饰的变量与方法可以直接通过类名.变量、类名.方法来调用 2.普通方法不能调用static变量 3.static修饰的方法也不能调用普通变量
-
-
九.代码块
-
静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。
-
1. public static String staticField = "静态变量"; 2. static { System.out.println("静态语句块"); } 3. public String field = "实例变量"; 4. { System.out.println("普通语句块"); }