首页 > 学院 > 开发设计 > 正文

回忆构造器及静态变量

2019-11-08 03:27:43
字体:
来源:转载
供稿:网友

今天学习主要学习的的是静态变量的概念及其使用。下面是我关于静态变量的一些看法。

静态变量通俗的说是属于类的属性。如果一个类要进行实例化,通过实例可以调用静态变量,类名也可以直接调用静态变量。如果实例化两个类的话。被static修饰的变量相当于是两个公共的属性。其中一个实例修改静态变量的话。那么其他的实例再进行调用的话会调用被修改的那个实例。例如以下代码就是可以清晰的显示出静态变量的的相关使用。变量a和变量b是静态变量。大笑

public class Test1 {public static void main(String[] args) {System.out.PRintln(A.a);A a1 = new A();A a2 = new A();System.out.println("修改之前 "+a1.a);System.out.println("修改之前 "+a2.a);a1.a = 12;System.out.println("修改之后 "+a1.a);System.out.println("修改之后 "+a2.a);System.out.println("修改之前 "+a1.c);System.out.println("修改之前 "+a2.c);a1.show(34);System.out.println("修改之后 "+a1.c);System.out.println("修改之后 "+a2.c);B b1 = new B();b1.get();B.get1();b1.get1();

System.out.println("通过类名直接调用"+A.a);}}class A {static int a = 5;static int b = 7;int c = 45;public void show (int c) {this.c = c;}}class B {int a = 5;static int b = 45;public void get () {System.out.println(a);}static void get1 () {System.out.println(b);}}

同理可得,静态方法的使用和概念是跟静态变量相同的,可看成一个是静态的属性(静态变量),一个是动态的属性(静态方法)。

构造器

 当然对于java,类的概念是重中之重,对于类的构造和对象的实现就需要用到构造器。

构造器具有初始化的作用。   例如public class Person(){     private string name;     private int number;     public Person(string n,int no){     name=n;     number=no;     }     public teach(){}     }   下面我们要对这个类的对象实例化:Person p = new Person();  以上就是构造器的语法了,这里用到了关键字来调用构造器。   new     讲到这里还没有什么可以困扰我们的地方,那么下面我们将借助有关继续的一些例子来继续阐述构造器问题:   假设publicclass People(){      private string name;      private int number ;      private int age;      public do(){}     }       有人也许会问为什么这个People类里面为什么没有定义构造器?其实,java中的JVM已经我们定义了一个无参数的默认构造器,即People(){}   到这里为止,没有任何问题,然而,一旦让People继承OldPeople并实例化,编译器就会报错:      public class People extendsOldPeople(){        private string name;        private int number ;        private int age;             public do(){}     public static void mian(string[] args){        OldPeople o=new OldPeople();     }   很抱歉你得到的是一条出错的信息,有人问了,你说OldPeople的构造器是默认的我才这样写,没错,OldOldPeople确实存在这样一个无参的构造器,这样写法换做OldPeople不做People的子类的情况下一定是正确的。       构造器的相关规则:  1.假如一个类没有设置字定义构造器,那么编译器会默认一个无参构造器。   2.在子类调用构造器时,优先调用父类的构造器。   3.假如自定义了构造器,那么默认构造器将不存在。      在上例中,OldPerson调用默认构造器前,编译器自动调用父类Professer的默认构造器,然而,Person有了自定义构造器,所以默认构造器不存在了,编译器报错…………     那么我们该怎么做呢?像下面这样就OK了。        public class People extends OldPeople(){         private string name;         private int number;         private int age;         OldPeople(string n,int no,int age){         super(n,no);         this.age=age;         }         public do(){}      }          这就是在子类中显式的调用父类构造器,注重,super必须是{}中的第一个执行语句。其实我们还有另外一种方法,在People类里面补充一个消失掉的默认构造器,如下:        public class People(){       private string name;       private int number;       public People(string n,int no){       name=n;       number=no;      }      People(){}       public teach(){}     }   构造器尽量使用的功能是传参数的功能,不要包含太多的操作语句即可。

如下例子:通过构造器将变量a,和变量b的值赋值。之后通过实例化对象进行调用方法。

import java.util.Scanner;public class Count {public static void main(String[] args) {System.out.println("请输入第一个数字");Scanner in = new Scanner(System.in);int a = in.nextInt();System.out.println("请输入第二个数字");int b = in.nextInt();Count1 co = new Count1 (a,b);co.add();co.sub();co.mul();co.div(); }}class Count1 {int a ;int b ;public Count1 (int a,int b) {this.a = a;this.b = b;}public void add() {int d = a + b;System.out.println(d);}public void sub() {int e = a - b;System.out.println(e);}public void mul() {int f = a/b;System.out.println(f);}public void div() {int g = a / b;System.out.println(g);}}

今天就写到了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表