java基础--------类的使用

    科技2022-07-11  91

    /** * 类的方法: * 1.语法格式:修饰符 返回值类型 方法名(参数列表){ * 方法体语句; * } * * 修饰符:public ,private, protected * 返回类型:return语句传递返回值,没有返回值void * 参数列表:(参数类型 形参1,参数类型 形参2,.......) * * 2.方法只有被调用才会被执行 * 3.方法中只能调用方法,不可以在方法内部定义方法 * 4.同一个类中,所有方法可以直接互相调用,不用new去实例化,(例外:java中 静态方法如main()不可以直接调用非静态方法和成员) * 5.可以将匿名对象作为实参传递给一个方法调用,student().name就是匿名对象,(不定义对象句柄,直接调用对象方法) * 6.类的访问机制: * (1)在同一个类中,类中的方法可以直接访问类中的成员变量,(例外:static方法访问非static的成员变量,编译不通过) * (2)在不同类中的访问,先创建有访问类的对象,通过对象访问类中定义的成员 * @author CodePC * */ public class student { public String name; public String sex; public double circle(double r) { double data=3.14*r*r; return data; } } /** * 类的成员之一:类的属性: * 1.语法格式: * 修饰符 类型 属性名=初值; * 2.变量的分类:成员变量和局部变量 * (1)在方法体外,在类体内 ,声明的变量叫做成员变量 * (2)在方法体内部声明的变量叫做局部变量,局部变量没有默认初始化值,每次声明必须赋值初始化,局部变量不用修饰符 * @author CodePC * */ public class plant { //成员变量与分为实例变量和类变量 //实例变量:在类实例化成对象之后才可以使用 public String name; //修饰符public 该属性可以被该类以外的方法访问 private int age;//修饰符private 该属性只能被该类的方法访问 //类变量:不需要类实例成对象就可以使用,通过该类的类名.属性这样的方式调用 public static String sex;//以static修饰 public void showname() { System.out.println(name); } public void showAge() { System.out.println(age); } } /** * 方法中不能直接写方法,原因在于方法是属于类的,而不是属于方法的,方法只能写在类里面,不能写在方法中 * 注意这里不能写成,类里面有main()方法,嵌套eat()方法获取其他方法的形式 * public class Animal{ * public static void main(String[] args) //main()是一个方法,且该方法不需要实例化就可使用,属于Animal这个类的程序入口方法 * { * //属性 * * //方法 * public void eat(String food){ //在这里你有写了一个方法,方法里面嵌套方法是不可以的 * System.out.println("食物是:"+food); * } * } * } * * @author CodePC * * 1.main() * */ public class Animal { String name;//定义动物这种类的属性,可以不初始化 int eye; int legs; public void eat(String food){ System.out.println(name+"这种动物的食物为:"+food); } public void move(String moveType) { System.out.println(name+"这种动物移动的方法是:"+moveType); } } /** * 1.文件名必须与public类的类名一致,(如果文件中有public类) * * * 2.一个java源文件可以有多个类,但只能有一个public的类,并且public的类名必须与文件名一致。 * java程序是从一个public类的main函数开始执行的,(其实是main线程),就像C程序是从main()函数开始执行一样。 * 只能有一个public类是为了给类装载器提供方便。 一个public 类只能定义在以它的类名为文件名的文件中。 * 一个源文件里能定义多个class,但是有且只能有一个public类, * 非public类的名字只要符合java标识符规则就可以,public类的名字必须和源文件名一致 * * 3.没有public static void main(String[] args){ * * }该main()方法的java源文件是不会被执行的,即run不了,因为没有程序入口,但是该类可被调用去实例化对象 * * 4.包含main()的类如果想运行则不一定要是public的类, * 《深入jvm》中解释:java虚拟机实例通过调用某个类的main()来运行一个Java程序, 而这个main()必须是public static void * 并接收一个字符串数组作为参数(即拥有public static void main(String[] args)的类可以作为java程序起点) * 任何拥有这样一个main()的类都可以作为java程序的起点。即在任何一个类中: * 只要有public static void main(String[] args)就可以作为java程序的起点。 *并没有说拥有main()方法的类一定要是public类。 * *5.总结:一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必 * 须与之(public类名)一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。 * 至于main()不是必须要放在public类中才能运行程序。 * * 注释:要想运行该种没有public的java源文件,若文件名与类名没有一致的,不能通过文件名.java来运行该程序,会报找不到该文件命名的类, * 但可以运行包含有main()方法的类的程序,运行main()方法的类名.java即可 * * @author CodePC * */ public class Persion { String name;//属性 int age; public void showName() { //方法创建,注意有返回值的函数return 的数据类型 System.out.println("姓名:"+name); } public int getAge() { return age; } } /** * 实例化对象的一种方式:new 关键字方式 * * 类名 定义类变量名 =new关键字 类名();该结构即可实例化出一个具体的类对象,同过该对象可调用该类种的属性和方法 * * @author CodePC * */ public class Hello {//注意创建类的时候类名后面是没有括号的,创建类中的方法才是函数有括号 public static void main(String[] args) { //Persion类中,类的基本使用 Persion teacher = new Persion();//声明类变量,实例化一个Persion的具体类,为teacher //teacher=new Persion(); 就是实例化一个teacher对象 teacher.name="刘冰";//给teacher这个对象的name,age属性赋值 teacher.age=20; teacher.showName(); //对象的方法调用 int a=teacher.getAge();//带返回值的方法,用对应的数据类型的变量接收 System.out.println("年龄"+a); //Animal类中,类的基本应用 Animal dog = new Animal(); dog.name="旺财"; dog.eye=2; dog.legs=4; dog.eat("骨头"); dog.move("跑"); //plant类中 //修饰符public 和private的区别 plant meigui = new plant(); meigui.name="玫瑰";//不能写成meigui="玫瑰",meigui 变量本质上是plant这个类的“数据类型” //meigui.age=2;//The field plant.age is not visible plant.age为private私有域,不能被其他类访问 plant.sex="男";//类变量调用,不需要实例化对象,直接用类名.变量名即可使用 System.out.println("类变量可以直接调用:"+plant.sex); //student类中的circle()方法调用方式 //法一 student area=new student(); double s = area.circle(2); System.out.println("圆的面积为:"+s); //法二 double x = new student().circle(2); System.out.println("圆的面积为:"+x); } }
    Processed: 0.008, SQL: 8