韩顺平视频笔记
类的定义
package 包名
1. 成员变量
public static void main(String[] args) {
//创建一个猫对象 或者 声明一个对象
Cat cat1= new Cat(); //不要忘了后边括号
//访问变量 对象名.变量名
cat1.age=10;
cat1.name="aaa";//注意是 双引号 不是单引号
cat1.color="yellow";
}
}
class Cat //类名 首字母应该大写
{
//成员变量 或者成员属性
int age ;
String name;
String color;
}
类是抽象的 代表一类
对象是具体的 实际的 代表一个具体实物
类是对象的模板 对象是类的一个个个体
class 类名 extends 父类名 implements 接口名
{
成员变量 包括基本数据类型 和 引用类型 比如 Master 类中的 myMaster
构造方法
成员方法
}
成员属性 成员方法
public class flow {
public static void main(String[] args) {
Person p1= new Person();
p1.age=10;
Person p2= new Person();
p2=p1; //p1 赋值 给 p2
System.out.println(p2.age);
p2.age=5; //更改p2 的年龄
System.out.println(p2.age);
System.out.println(p1.age); //输出p1 p2 年龄 都是5了 说明 指向同一个对象
}
}
class Person{
int age;
String name;
}
2.成员方法
在类中 定义行为
成员方法的 语法规则
public 返回数据类型 方法名(参数列表)
{
方法体
}
举例
public void speak(){
System.out.println("i can speak");
}
class Person{
int age;
String name;
public void speak(){
System.out.println("i can speak");
}
//成员方法
public int jisuan(){
int sum=0;
for (int i=1;i<100;i++){
sum=sum+i;
}
System.out.println(sum);
return sum;
}
//带参数的成员方法
public int jisuan(int n){
int sum=0;
for (int i=1;i<n;i++){
sum=sum+i;
}
System.out.println(sum);
return sum;
}
}
带参数的方法 虽然返回值不同但是 参数一样
//计算两个数的和 ,并且把结果返回给调用它的函数
public int jisuan (int a, int b){
int x = a+b;
return x; //返回类型 和返回结果的类型 必须一样
}
//如果两个方法 返回值不同 但是方法名一样 编译错误
public void jisuan (int a ,int b){
int x = a+b;
}
成员方法 如何 声明
public int test (int a)
访问修饰符 数据类型 函数名 (参数列表)
return 表达式
注意 调用调用成员方法的时候,类型 和 个数 都要一样
3. 构造方法 构造函数
特点 1. 方法名和类名相同 2. 没有返回值 3.在创建一个类的新对象时,系统会自动调用该类的构造方法
可以有多种构造方法
如果不定义构造方法 系统有默认的构造方法
public static void main(String[] args) {
Person p1= new Person(8,"zhihao");
Person p2 = new Person(8);
System.out.println(p1.name);
System.out.println(p1.age);
System.out.println(p2.age);}
class Person{
int age;
String name;
Person(int age,String name){
this.age=age;
this.name = name;
}
public Person(int age){
this.age=age;
}
}
主要用处: 就是初始化 成员属性 成员变量
4. this
上边的例子
this 属于一个具体对象 而不是属于类
public class flow {
public static void main(String[] args) {
Dog dog1= new Dog(2,"aa");
Person p1 = new Person(dog1,23,"zhihao");//它们都是 仅仅指向 dog1 对象
Person p2 = new Person(dog1,22,"shiwen");
p1.showInfo();
}
}
class Person{
int age;
String name;
Dog dog ; //引用类型
public Person(Dog dog,int age,String name){
this.age=age ;
this.name = name; //this 只能在定义的时候用
this.dog = dog;
}
public void showInfo(){
System.out.println(name);
System.out.println(this.dog.name);
}
}
class Dog{
int age;
String name;
Dog(int age,String name){
this.age=age;
this.name=name;
}
}
5.类变量 静态变量 静态方法 类方法
public class flow {
public static void main(String[] args) {
Person p1 = new Person(23,"zhihao");
Person p2 = new Person(22,"shiwen");
System.out.println(p1.total); //total 是静态变量 可以不通过对象 用类直接访问
System.out.println(Person.total);
p1.showInfo(); //showInfo 是静态方法 可以通过 对象 或者 类直接访问
Person.showInfo();
}
}
class Person{
int age;String name;
public static int total=0; //total 是静态变量 可以被任意对象 访问
public Person(int age,String name){
this.age=age ;
this.name = name;
total ++;
System.out.println("join");
}
static public void showInfo(){ //静态方法 静态方法不能访问 非 类变量 比如在静态方法中 访问 age 就会报错
System.out.println(total); }
}
静态区域块
public class flow {
static int i;
static{
//该静态区域块 只被执行一次 即使 主函数里边没有东西 也会执行这个玩意儿
i++;
System.out.println("static");
}
public flow(){
i++;}
public static void main(String[] args) {
flow flow1 = new flow();
System.out.println(flow.i);
flow flow2 = new flow();
System.out.println(flow.i);
}
}
static
2
3