从C到JAVA-入门级教程

前言
本文章需有一定的C基础和面向对象思想

目录

  • 一.开篇
    • 浅谈JAVASE,EE,ME
    • 浅谈JRE,JDK
  • 二.面向对象
    • 1.封装
      • 1.1.封装的概念
      • 1.2.构造方法
      • 1.3.this关键字
      • 1.4.static关键字
      • 1.5.方法重载
      • 1.6.包package
    • 2.继承
      • 2.1.继承的概念
      • 2.2.super关键字
      • 2.3.方法重写-Override
      • 2.4.Object类常见用法
    • 3.多态
      • 3.1.概念
      • 3.2.对象上下转型(和C中的强制转化类型类比)
    • 4.抽象类
      • 4.1.概念
      • 4.2.模板方法模式
    • 5.接口
    • 6.内部类
      • 6.1.概念
      • 6.2.成员内部类
      • 6.3.匿名内部类(一开始可能比较难理解)
    • 7.异常
      • 7.1.概念
      • 7.2.异常分类
      • 7.3.java异常处理机制
      • 7.4.try...catch...finally
      • 7.5.throw和throws
      • 7.6.自定义异常
    • 8.泛型——jdk1.5后才引入(类比C中define ElementType)
      • 8.1.问题引入
      • 8.2.泛型类
      • 8.3.限制泛型可用类型
      • 8.4.泛型类型通配
      • 8.5.泛型方法(比泛型类、方法重载更加灵活)
  • 三.结语

一.开篇

浅谈JAVASE,EE,ME

javase:最标准的java语言,是做电脑上运行的软件
javaee:无非在标准java上多了一些API,用来做服务器(网址)
javame:无非又多了一些API,供移动设备,嵌入式设备开发
真的只是浅谈~

浅谈JRE,JDK

jre:java运行时环境,计算机运行java程序时的环境(java跨平台强的原因),jre内含vm虚拟机

jdk:java语言开发工具包,是java的核心,包含jre和许多API
JDK包含的基本组件包括:
javac:编译器,将源程序转成字节码
jar:打包工具,将相关的类文件打包成一个文件
javadoc: 文档生成器,从源码注释中提取文档
jdb:debugger,查错工具
java:运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsol:Java进行系统调试和监控的工具

二.面向对象

1.封装

1.1.封装的概念

将方法和字段一起包装到一个单元中,单元以类的形式实现,能做到信息隐藏,隐藏对象的实现细节,具体的隐藏(访问修饰符),“定义类,定义其属性、方法的过程称为封装类”。
四中访问修饰符:

  • public:对所有类可见
  • protected:对同一包中的类可见、对同一包及不同包中的子类可见
  • default:对同一包中的类可见、对同一包中的子类可见
  • private:仅对类本身可见
从C到JAVA-入门级教程_第1张图片

访问权限:

从C到JAVA-入门级教程_第2张图片

封装private属性时,一般要为每个属性创建赋值方法和取值方法(也就是set()方法来为这个属性赋值,get()方法来获取这个属性的值,以便其其它类可以对此属性进行访问)。
Demo:

public class Student{
   
	private age;
	public void getage(){
    };
	private void change_age(){
    };
	public void askage(){
   
		change_age();
	}
	//在其他类中:
public class Demo {
   
	public static void main(String[] args) {
   
		Student stu = new Student;
		Student.age = 10;//错误!!!属于其它类对age访问,访问不到
		Student.getage();//属于getage对age访问,可以访问到
		Student.change_age();//属于其它类对change_age访问,访问不到,chang_age也是private
		Student.askage();//属于askage对change_age访问,可以访问到
	}
}

1.2.构造方法

构造方法为对象初始化时赋初值,new实例化对象时自动被调用。
语法规则:

  • 构造方法名与类名一致
  • 没有返回类型
  • 方法实现主要为字段赋初

构造方法可重载,函数名一样,参数不一样。不写构造方法时有默认的无参构造方法。
Demo:

class Student
{
   
	private int age;
	String name;
	double score;
	Student(){
   //方法可重载,函数名一样,参数列表不同
		System.out.println("构造方法1被调用");
	}
	Student(int newage,String newname){
   
		System.out.println("构造方法2被调用");
		age = newage;
		name = newname;
	}
	Student(int newage,String newname,double newscore){
   
		System.out.println("构造方法3被调用");
		age = newage;
		name = newname;
		score = newscore;
	}
}
public class Demo1 {
   
	public static void main(String[] args) {
   
		Student stu1 = new Student(18,"xyb",98.5);
		Student stu2 = new Student();
		Student stu3 = new Student(18,"xyb");
	}
}

结果:
从C到JAVA-入门级教程_第3张图片

1.3.this关键字

  • 在类的方法中,使用this关键字代表的是调用此方法的对象的引用
  • this可以看做是一个变量,它的值是当前对象的引用
  • 使用this可以处理方法中的成员变量和形参同名的问题
  • 当方法内需要用到调用该方法的对象时,就可以用this
  • 在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法

Demo:

class Student
{
   
	private int age;
	String name;
	double score;
	static int data;

	Student(int age,String name,double score){
   
		System.out.println("构造方法被调用");
		this.age = age;
		this.name = name;
		this.score = score;
	}
}
public class Demo1 {
   
	public static void main(String[] args) {
   
		
		Student stu1 = new Student(18,"xyb",98.5);
		stu1.score = 10;
	}
}

1.4.static关键字

  • 用来修饰类的成员,修饰成员变量称为类变量(静态变量)
  • 修饰成员方法称为类方法(静态方法)
  • 当类被加载的时候就会被加载,优先于对象的存在
  • 用来修饰语句块-称为静态代码块,先于构造方法之前执行,只会执行一次,用来对静态成员做初始化
  • 调用的时候可以直接通过类名.成员来进行访问

static关键字注意事项:

  • 静态方法中只能访问外部静态成员
  • 静态方法中不能出现this关键字(因为静态代码比构造方法先执行,此时对象还未实例化)

Demo:

class Student
{
   
	private int age;
	String name;
	double score;
	static int data;
	
	static{
   //静态代码块先于构造方法,只会被执行一次
		System.out.println("静态代码块");
		data = 100;
	}
	static void test(){
   
		//System.out.println(this.age);
		System.out.println(data);
	}
	Student(int age,String name,double score){
   
		System.out.println("构造方法3被调用");
		this.age = age;
		this.name = name;
		this.score = score;
	}
}
public class Demo1 {
   
	public static void main(String[] args) {
   
		
		Student stu1 = new Student(18,"xyb",98.5);
		stu1.score = 10;
		Student.data = 10;//访问static关键字修饰的成员,直接用类名,可不用对象名
		System.out.println("ret="+add(1,3));
	
	}
	static int add(int a,int b){
   
		return a+b;
	}
}

结果:

1.5.方法重载

在java中,同一个类可以有同名而不同参的方法称为重载方法(overload)。

1.6.包package

打包的意义:

  • 标准java库是由一系列包组成,包括java.lang/java.util/java.net等等
  • 标准java包就是层次型包结构,使用嵌套层次结构来组织包
  • java包是为了更好的规划代码,防止命名冲突和混乱
  • 当把类组织起来放进一个包内时,也就给包中成员赋予了互相访问的权限,就拥有了该包内的程序代码(访问权限参照1.1表)

所有程序员都可以编写属于自己的java包,公司一般采用域名倒置作为包的前缀。
示例图↓
从C到JAVA-入门级教程_第4张图片

2.继承

2.1.继承的概念

  • 继承背后的思想就是基于已存在的类来构建新类
  • 当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性
  • 在java中,除了Object类之外,所有类都是子类,都只有唯一的父类
  • 继承使用关键字extends

Demo:

class Person{
   
	String name;
	String address;
	
	public void eat(){
   
		System.out.println(name+"吃饭");
	}
	public void drink(){
   
		System.out.println("喝水");
	}
}

class Student extends Person{
   //继承于人
	

你可能感兴趣的:(Java,java,面向对象编程,抽象类,编程语言,封装)