Java初体验
一、Java概述
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
来自百度百科
二、Hello World实现
按照编程界的习俗,咱们先实现个“Hello World”再说。
零基础通道:
①打开eclipse
②创建java project
③输入代码
包名:com.hello66
java文件名:helloworld
package com.hello66;
public class helloworld {
public String name = "Hello World!";
public void hello() {
System.out.print(name);
}
public static void main(String[] args) {
helloworld hl = new helloworld();
hl.hello();
}
}
三、类和对象
从上面那个案例呢,大致就可以看出来java编程的面向对象的特性。我先是在包(package)里面创建了一个helloworld类(class),然后在类里面定义了name字符串、hello方法。主函数也是放在当前类下,在主函数中我们为了调用在类里面定义的方法,先是创建了一个实例化对象,然后用对象去调用。
具体说说,什么是类,什么是对象。
类:对具有特征和行为的对象的抽象。
对象:任何一个具体的事物或者物体就是一个对象。
举一个栗子:
咱们定义一个Student类,这个类具有以下属性
package com.hello66;
public class Student {
public String name;
public int age;
public String grade;
public int score;
public String course;
}
再创建两个方法
public void learn() {
System.out.println(grade+"的"+name+"正在学习"+course+"期中考试取得了"+score);
}
public void inform() {
System.out.println(name+"今年"+age);
}
再在主函数中创建芳芳对象来使用相关的属性和方法
可以看到,因为芳芳是基于Student类创建的对象,所以芳芳就具有了我们在Student类里面创建的属性和方法。
简2言之,类就是具有一系列属性和方法的抽象集合,而对象就是由类创建出来的实例个体,具有类的方法和属性。
而不同对象的属性值是不互通的。
四、访问修饰符(public private protected)
细心地小朋友就会发现,Java在定义变量和函数的时候除了数据类型的指定还有一个关键词的指定,即上述的“public”,这是对访问级别的一个声明,事实上java中有4种访问级别类型的指定方式。
分别是
- public
- private
- protected
- 不指定
它们具体的区别可以参考这里
五、类的继承(重写、重载)
Java还有一个比较特殊的方式——类的继承,通过继承就可以实现方法的重写,重载,属性的继承,可以大大的减少代码量,同时也展现了类与类之间的联系和代码的多态性。
继承extends
我们再创建一个midStudent类用extends关键字来继承Student类
package com.hello66;
public class midStudent extends Student{
public static void main(String[] args){
midStudent yangyang = new midStudent();
yangyang.name = "洋洋";
yangyang.age = 20;
yangyang.course = "Java";
yangyang.grade = "大三";
yangyang.score = 80;
yangyang.learn();
yangyang.inform();
}
}
可以看到,我们定义的这个midStudent类里面还没有写入任何东西,但是创建对象后具有Student里面的属性和方法。
方法重写
方法重写是在子类中将父类中已有的方法进行重写,重写后的子类方法会直接覆盖掉父类中的方法。
ps:在方法重写时:
- 子类中方法的访问修饰符级别大于等于父类中的
- 返回值类型,方法名,参数类型(个数,顺序)完全一样
- 需要保留父类方法可以用super对象(代表当前类的父类对象)调用父类中的方法
package com.hello66;
public class midStudent extends Student{
public void learn() {
super.learn(); //调用父类方法
System.out.println("学习使我快乐!");
}
public static void main(String[] args){
midStudent yangyang = new midStudent();
yangyang.name = "洋洋";
yangyang.age = 20;
yangyang.course = "Java";
yangyang.grade = "大三";
yangyang.score = 100;
yangyang.learn();
}
}
方法重载
方法重载是指,两个方法方法名相同,传入的参数类型,个数,顺序不同。在方法调用时根据不同的实参来使用不同的重载方法。
package com.hello66;
public class midStudent extends Student{
public void learn() {
System.out.println("学习使我快乐!");
}
public void learn(String n,int c) {
System.out.println(n+"已经学习Java"+c+"年了。");
}
public static void main(String[] args){
midStudent mumu = new midStudent();
mumu.learn();
mumu.learn("木木", 2);
}
}